swapper进程【转】
转自:https://blog.csdn.net/qq_27357145/article/details/80462292
LINUX进程小结
id为0的进程通常是调度进程,常常被称为交换进程(swapper),该进程为内核的一部分,他并不执行任何磁盘上的程序,因此也被称为系统进程。
id为1 init进程,在自举过程结束后由内核调用。
id为2 页守护进程
对于父进程已经终止的所有进程,他们的父进程都改变为init。
在一个进程终止时,内核逐个检查所有活动的进程,以判断他是否是正要终止进程的子进程,如果是,则将该进程id更改为1,这种方法保证了每个进程都有一个父进程。
如果子进程在父进程终止之前终止,父进程如何能做相应检验得到子进程的终止状态呢?对此的回答是:内核为每个子进程保存了一定量的信息,所以当终止进程的父进程调用wait或waitpid时,可以得到这些信息。
僵死进程:一个已经终止,但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占有的资源)的进程
一个由init进程领养的进程终止时会发生什么?他会不会变为一个僵死进程?
否!因为init被编写为无论何时只要有一个子进程终止,init就会调用一个wait函数取得其终止状态。这样就防止了系统中有很多僵死进程。
Swapper 进程:
http://blog.chinaunix.net/uid-26856484-id-3266514.html
所有进程的祖先叫做进程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 进程一直存活,因为它创建和监控在操作系统外层执行的所有进程的活动。
转载:https://blog.csdn.net/lishanmin11/article/details/40556281
最新文章
- 关于NotePad一些功能的实现方法
- Linux CAT与ECHO命令详解 <;<;EOF EOF
- 从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)
- PHP中将对数据库的操作,封装成一个工具类以及学会使用面向对象的方式进行编程
- Greenplum同步到Oracle
- (Google面试题)有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。
- map &; flatMap 浅析
- java 正则匹配int型
- 30分钟入门Java
- ubuntu16.04开机循环输入密码无法进入桌面的解决办法
- C# .NET Web API 如何自訂 ModelBinder
- JS 转换HTML转义符
- MongoDB安装之window版本的安装
- spark2.1源码分析1:Win10下IDEA源码阅读环境的搭建
- Azure IoT 预配置解决方案
- String、StringBuffer与StringBuilder之间区别(转)
- Sublime Text 3中文乱码
- Codeforces Beta Round #97 (Div. 1) A. Replacement 水题
- netcore中使用log4net日志
- Hyperledger Fabric国密改造