为什么会产生僵尸程序

系统进程的工作原理就是,当我们启动一个程序的时候,开始执行我们的任务,等任务结束了,我们就停止了这个进程,进程就会从进程表中移除。而僵尸进程是Linux系统中比较常见的一种系统漏洞,即程序已经执行完毕,但是依然留在进程表中。

僵尸程序产生的原因:当程序运行时,它会产生要给父进程和很多子进程,所有这些子进程都会消耗内核分配给它们的内存和CPU资源。

这些子进程完成执行后会发送一个 Exit 信号然后死掉。这个 Exit 信号需要被父进程所读取。父进程需要随后调用 wait 命令来读取子进程的退出状态,并将子进程从进程表中移除。

若父进程正确第读取了子进程的 Exit 信号,则子进程会从进程表中删掉。

但若父进程未能读取到子进程的 Exit 信号,则这个子进程虽然完成执行处于死亡的状态,但也不会从进程表中删掉。

少量的僵尸程序不会对系统产生明显的影响,但是由于系统的可用进程是有限的,当僵尸程序达到一定数量的时候,就会导致系统不能产生新的进程。

僵尸(bot)程序缓解僵尸进程的产生是因为父进程没有 wait() 子进程。所以如果我们自己写程序的话一定要在父进程中通过 wait() 来避免僵尸进程的产生。

当系统中出现了僵尸进程时,我们是无法通过 kill 命令把它清除掉的。但是我们可以杀死它的父进程,让它变成孤儿进程,并进一步被系统中管理孤儿进程的进程收养并清理。https://www.imperva-incapsula.cn

转载于:https://my.oschina.net/u/3778497/blog/2993066

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值