孤儿进程
- 父进程运行结束后,但子进程还在运行(为运行结束),这样的子进程就称为孤儿进程(Orphan Process)。
- 每当出现一个孤儿进程的时候,内核几把故而进程的父进程设置为init(进程号为1),而init进程会循环地wait()已经退出的子进程。这样,当一个孤儿进程结束了其生命周期的时候,init进程就会出面处理它的一切善后工作。
- 因此孤儿进程不会有什么危害 。
僵尸进程
- 每个进程结束后,都会释放自己地址空间的用户区数据,内核区的PCB(进程控制块)没有办法自己释放掉,需要父进程去释放。
- 进程终止时,父进程尚未回收子进程存放于内核中的残留资源(PCB),子进程就会变成僵尸(Zombie)进程。
- 僵尸进程不能被命令:kill -9杀死。
- 这样就会导致一个问题,如果父进程不调用wait()或waitpid()的话,那么保留的那些段信息就不会被释放,其进程号会一直被占用,但是系统所能使用的进程号是有限的,如果产生大量僵尸进程,就会因为没有可用的进程号,导致系统不能产生新的进程,此即为僵尸进程的危害,应当避免。