导读:看过“unix环境的高级编程”第八章的过程,提到了孤儿过程和僵尸过程,这两个概念都比较模糊。如今有人问什么是孤儿过程和僵尸过程,会带来什么问题,怎么解决,2.基本概念。在unix/linux中,......
3.问题和危害。
unix提供了一种机制来确保只要父进程希望了解子进程的状态信息,就能获得。这样的机制就是:每一个进程退出时,内核都会释放这个进程的所有资源,包括打开的文件、占用的内存等等。但仍保留某些信息(包括进程号theprocessID),结束状态theterminationstatusoftheprocess,RuntimetheamountofCPUtimetakenbytheprocess等)。在父进程通过wait/waitpid获取之前,它才被释放。但是,这就产生了问题,如果进程没有调用wait/waitpid,保存的这些信息将不会被释放,它的进程号将一直被占用,但系统可以使用的进程号是有限的,如果生成了大量僵死进程,由于没有可用进程号,系统无法生成新进程.这是一个僵尸进程的危险,应该避免。
孤独症过程是一个无父进程的过程,孤儿进程这一重要任务落在init进程上,init过程就像一个民政部,专门处理孤儿过程中的善后问题。当一个孤儿进程发生时,内核将将孤儿进程的父进程设置为init,init进程将循环使用wait()其退出的子进程。如此一来,当一个孤儿进程在生命周期结束之时,init进程就会代表政党和政府处理它所有的善后工作。所以孤独症的过程是没有危险的。
版权声明:本文由用户自发贡献,观点仅代表作者本人,本站不承担相关法律责任。如有侵权/违规内容本站将立刻删除