您的位置首页  散文精选

原创僵死进程(僵尸进程怎么处理)

> Fig 1: Walking Dead Series (from internet)我第一次听说僵尸进程时,以为是个玩笑。因为听到僵尸

原创僵死进程(僵尸进程怎么处理)

 

> Fig 1: Walking Dead Series (from internet)我第一次听说僵尸进程时,以为是个玩笑因为听到僵尸这个词时,如果想到的是不同的电影或连续剧,显示行尸走肉僵尸显示为攻击生物,导致人类生存危机。

只有进一步阅读,我才能理解为什么某些进程被称为僵尸进程在本文中,我想介绍一下僵尸进程以及如何创建僵尸进程僵尸进程与他们的名字有共同点,因此在了解僵尸进程是什么之前,让我们先看看“僵尸”一词僵尸是通过尸体复活创建的神话般的不死有形遗物。

实际上,按照海地农村的民间传说,僵尸是死者,由于尸体,巫师或女巫的尸体化而复活因此,按照僵尸的基本定义,这是一个死者,可以身体康复在这种情况下,流程与人员之间具有相似性,它指的是一个已死的流程(已终止),但仍然可以恢复,即仍未完全删除。

我们在电影/系列中已经看到,僵尸对正常人构成危险,那么僵尸进程是否对其他进程构成危险?因此,让我们来看一下在Unix和类似Unix的计算机操作系统上,僵尸进程或已取消运行的进程是已完成执行(通过退出系统调用)但在进程表中仍具有条目的进程:它是处于“终止状态”的进程。

在操作系统中,流程从创建到终止都会经历不同的状态在UNIX系统中,一个进程在创建时,在进程表中创建了一个条目进程表不过是RAM(随机存取存储器)中的数据结构,其中包含有关正在运行的进程的信息当进程终止时,其条目将从进程表中删除。

进程在进程表中通过其PID(即进程ID)唯一标识进程ID是一个整数,范围从0到通常在Linux上可以更改的99999,在OSX上是固定的99998如果进程ID已用尽(在给定范围内,这是极不可能的),则无法创建新进程。

因此,重要的是将终止的进程条目从进程表中删除,以便可以将其PID重新用于新进程因此,想到的问题是在什么情况下终止的流程条目没有从流程表中删除谁负责从终止的进程的进程表中删除条目?从流程表中删除终止的流程条目与其父流程联系在一起。

父进程需要终止,或者需要获得子进程状态变化的通知在Linux的世界中,进程存在于父进程-子进程关系中,进程初始为根,其PID值为1当子进程终止时,父进程借助等待系统从子进程中寻找信号SIGCHLD称呼仅当父进程接收到信号时,它才会从进程表中删除该条目。

因此,基于此,我们可以推断出,如果父进程未调用wait()系统调用来接收有关子进程状态更改的通知,则不会从进程表中删除该子进程,从而僵尸僵尸进程创作

> Fig 3: Running the Code in background to get the PID

> Fig 4: The second entry is the child process which is a Zombie在图2中的代码中,我们调用Fork系统调用来创建子进程,但由于没有子进程的代码,它将在创建时立即终止。

现在,父过程会睡眠120秒,因此直到那个时间将在作为僵尸的过程表中列出子进程条目图4中的第二个条目是已终止的子进程,但仍然在进程表中找到条目我们可以看到分配给该过程的Zn属性,表示这是僵尸进程我们还可以看到孩子的父PID是我们执行的代码的进程ID。

在下一节中,让我们来看看如何在终止上立即清除子流程,以确保不要排除系统中的过程ID整数或其他不必要的杂乱没有僵尸

> Figure 6: Running the above code in background to get the PID

> Figure 7: No Zombie process in the process table如果将图2和图5中的代码进行比较,唯一注意到的变化是图5的第5行中的wait的附加系统调用如果观察到代码的执行结果,则可以看到没有僵尸进程。

在系统中在编写代码时,对于开发人员来说,调用wait系统调用很重要,以确保将已终止的进程条目从进程表中删除如果不这样做,该条目将仅在父进程终止时自动删除如果父进程恰好是一个守护进程,预计将在很长一段时间内运行,则将无法充分利用进程ID整数。

希望您喜欢这篇文章,如果有任何疑问或建议,请发表评论感谢您的阅读祝你好运,学习愉快(本文由闻数起舞翻译自Joshua McKenty的文章《Zombie Process》,转载请注明出处,原文链接:https://medium.com/swlh/zombie-process-7ca4e6bcc621)

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186