博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swapper进程【转】
阅读量:6495 次
发布时间:2019-06-24

本文共 982 字,大约阅读时间需要 3 分钟。

转自:

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 进程一直存活,因为它创建和监控在操作系统外层执行的所有进程的活动。

转载:https://blog.csdn.net/lishanmin11/article/details/40556281

你可能感兴趣的文章
Quick Cocos2dx 初步战斗
查看>>
Java中的两个关键字——super、this
查看>>
UVa11300 - Spreading the Wealth
查看>>
关于String数组的用法
查看>>
windows系统杀掉explorer.exe进程后黑屏
查看>>
说说大型高并发高负载网站的系统架构【转】
查看>>
SSM登陆拦截器实现
查看>>
SQL 注入防御方法总结
查看>>
springmvc常用注解标签详解
查看>>
Docker镜像使用
查看>>
2019年3月
查看>>
你知道实习对你有多重要吗?
查看>>
c语言模拟实现oc引用计数
查看>>
STL--自定义类型的排序
查看>>
java知识概论
查看>>
wireshark-wincap安装问题
查看>>
软考自查:计算机网络
查看>>
java——慎用可变参数列表
查看>>
九段秘书论
查看>>
unity 2d 游戏优化之路 遇坑记录
查看>>