我们可以发出CTRL+Z暂停 Unix 中的任何作业的命令,然后使用fg
或将它们恢复bg
。我想了解一下,那些被暂停的工作会怎么样?他们被杀/终止了吗?换句话说,终止进程和挂起进程有什么区别?
答案1
这些工作岗位并没有被消灭,而是被暂停了。它们与挂起时的状态完全相同:相同的内存映射、相同的打开文件、相同的线程……只是进程坐在那里什么都不做,直到恢复为止。就像你暂停看电影时一样。挂起的进程的行为与调度程序顽固地拒绝为其提供 CPU 时间的进程完全相同,只是进程状态被记录为挂起而不是运行。
答案2
从用户的角度来看,这意味着作业已暂停。它将不再使用任何CPU。它将要但是,请继续使用相同数量的 RAM。这就是为什么你可以将它带回到前台,fg
它会从上次停止的地方继续。
如果您终止一个作业然后重新启动它,它将从头开始。
答案3
挂起时,内核不会将进程添加到处理器队列中。当进程被杀死时,进程的堆栈(内存)被释放。