id为0的进程通常是调度进程,常常被称为交换进程(swapper),该进程为内核的一部分,它并不执行任何磁盘上的程序,因此也被称为系统进程。

id为1 init进程,在自举过程结束后由内核调用。

id为2 页守护进程。

对于父进程已经终止的所有进程,他们的父进程都改变为init。

在一个进程终止时,内核逐个检查所有活动的进程,以判断他是否是正要终止进程的子进程,如果是,则将该进程id更改为1,这种方法保证了每个进程都有一个父进程。

如果子进程在父进程终止之前终止,父进程如何能做相应检验得到子进程的终止状态呢?对此的回答是:内核为每个子进程保存了一定量的信息,所以当终止进程的父进程调用wait或waitpid时,可以得到这些信息。

僵死进程:一个已经终止,但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占有的资源)的进程

一个由init进程领养的进程终止时会发生什么?他会不会变为一个僵死进程?

否!因为init被编写为无论何时只要有一个子进程终止,init就会调用一个wait函数取得其终止状态。这样就防止了系统中有很多僵死进程。

Swapper 进程:

进程0 : 

所有进程的祖先叫做进程0 ,idle 进程或因为历史的原因叫做swapper 进程。它是在 linux 的初始化阶段从无到有的创建的一个内核线程。这个祖先进程使用静态分配的数据结构。

在多处理器系统中,每个CPU都有一个进程0,主要打开机器电源,计算机的BIOS就启动一个CPU,同时禁用其他CPU。运行的CPU 上的swapper进程初初始化内核数据结构,然后激活其他的并且使用copy_process()函数创建另外的swapper进程,把0 传递给新创建的swapper进程作为他们进程的PID.

进程1 :

由进程0创建的内核线程执行init() 函数,init() 一次完成内核的初始化。init()调用execve()系统调用装入可执行程序init ,结果 ,init 内核线程变成一个普通的进程,且拥有自己的每个进程内核数据结构。在系统关闭之前,init 进程一直存活,因为它创建和监控在操作系统外层执行的所有进程的活动。

众多python教程,尽在云海天教程网,欢迎在线学习!

来源:PY学习网:原文地址:https://www.py.cn/article.html

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » python swapper是什么