每天一个操作系统知识-僵死和孤儿进程

  1. 原理
  2. 僵死线程很容易造成进程号的大量占用,那么该如何处理这种问题呢?

原理

我们知道,linux中父进程通过fork和exec来创建并运行子线程,由于linux存在一个机制,就是父进程只要想要拿到子进程的结束时的信息就可以得到,因此每个子进程退出的时候,内核释放进程持有的所有资源,包括打开的文件,占用的内存等,但是仍然会保留一定的信息(包括进程号)供父进程调用,父进程通过调用wait或waitpid方法来释放这一部分资源,如果父进程迟迟不调用的话,这种子线程就叫僵死线程,当有大量的僵死线程的话会占用大量的进程号,由于进程号是有限的很可能会造成其他的进程不能被创建。

  • 僵死线程:由以上分析可知,僵死线程为父进程没有调用wait或waitpid方法导致的。
  • 孤儿线程: 孤儿线程就是子进程还在,父进程没了就成孤儿进程了,孤儿进程会被init进程托管,并由init进程对它门完成状态收集工作,问题不大。

僵死线程很容易造成进程号的大量占用,那么该如何处理这种问题呢?

产生这种线程的原因一般都是父线程只管创建子线程,但是不调用wait或waitpid方法来处理,一般情况下是找到这个父线程,然后kill掉,这样这些僵死线程就变成孤儿线程了,这样的话init线程就能回收。


本网站发布的一切文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请联系邮箱:1194325527@qq.com处理

目录
×

给作者杯卡布奇诺

github