程序会在以下情况下被挂起:
用户请求:
用户可以直接请求挂起某个特定的进程,例如在程序运行期间发现可疑问题需要暂停进程。
父进程请求:
父进程可能需要考察、协调或修改子进程,从而请求挂起子进程。
操作系统需要:
操作系统可能会因为资源使用情况的检查和记账、负载调节、定时任务执行或安全原因挂起进程。
I/O请求不满足:
如果进程的I/O请求不能立即得到满足,系统可能会选择暂时挂起它。
后台任务:
当应用程序被移到后台时,通常会在几秒钟内被挂起。应用程序可以通过声明“后台任务”来延长这个时间,但通常有申请后台运行时间的限制。
系统资源不足:
在内存空间紧缺的情况下,阻塞状态的进程可能会被挂起,以释放内存资源供其他程序使用。
定时任务:
进程可能会周期性地执行任务,执行完毕后会挂起而不是阻塞,以节省内存。
安全原因:
系统在出现故障或功能受到破坏时,可能会挂起正在进行的进程,待故障消除后恢复进程状态。
总结来说,程序挂起可以由用户、父进程、操作系统、I/O请求、后台任务、资源不足、定时任务或安全原因触发。挂起状态可以是阻塞挂起或就绪挂起,具体状态取决于进程挂起的原因和性质。