为什么会产生僵尸程序

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

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

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

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

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

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

僵尸(bot)程序缓解:

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

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


为什么会产生僵尸程序_第1张图片
https://www.imperva-incapsula.cn

你可能感兴趣的:(为什么会产生僵尸程序)