僵尸进程是指一个已经终止(exit)但其父进程尚未调用wait()
或waitpid()
系统调用来获取其终止状态的子进程。在Unix/Linux系统中,每个进程都有一个进程描述符,其中包括进程状态等信息。当子进程结束时,它并不会立即从系统中完全消失,而是转变为僵尸状态(Z状态),此时它仅保留了少量信息,如进程ID、退出状态码等基本信息,以便父进程查询。僵尸进程并不消耗CPU资源,但其进程描述符仍然存在于系统中,占用一定的内存空间(主要是进程控制块PCB),如果长时间不被父进程清理,累积起来会消耗系统的进程描述符资源,可能导致系统无法创建新的进程。
孤儿进程则是指父进程先于子进程退出,使得子进程失去了父进程。在这种情况下,操作系统会自动接手,通常是由init
进程(进程ID为1)作为新的父进程来“收养”这个孤儿进程。init
进程会在适当的时候调用wait()
系列函数来回收孤儿进程的信息,因此孤儿进程最终会被正确清理,不会造成资源泄露。
生命周期阶段:
资源占用情况:
解决方法:
wait()
或设置SIGCHLD信号处理器来清理僵尸进程。总之,僵尸进程是一种待清理的状态,可能带来资源管理的问题
阅读量:642
点赞量:0
收藏量:0