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
swapper进程【转】的更多相关文章
- 深入理解perf报告中的swapper进程
一.前言 1.在perf监控进程的系统调用时,会出现大量swapper进程 2.官方描述该进程是当CPU上没有其他任务运行时,就会执行swapper.换句话说swapper意味着CPU啥事也没干,跑去 ...
- Linux进程管理知识整理
Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) ...
- Linux操作系统进程模型分析进程
Linux操作系统简介 Linux拥有现代操作系统的功能,如真正的抢先式多任务处理,支持多用户内存,保护虚拟内存,支持SMP.UP,符合POSIX 标准联网.图形用户接口和桌面环境具有快速性.稳定性等 ...
- Linux进程调度器的设计--Linux进程的管理与调度(十七)
1 前景回顾 1.1 进程调度 内存中保存了对每个进程的唯一描述, 并通过若干结构与其他进程连接起来. 调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为 ...
- Linux进程调度器概述--Linux进程的管理与调度(十五)
调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换. 1 背景知识 1.1 什么是调度器 ...
- Linux下2号进程的kthreadd--Linux进程的管理与调度(七)
2号进程 内核初始化rest_init函数中,由进程 0 (swapper 进程)创建了两个process init 进程 (pid = 1, ppid = 0) kthreadd (pid = 2, ...
- Linux进程管理 (1)进程的诞生
专题:Linux进程管理专题 目录: Linux进程管理 (1)进程的诞生 Linux进程管理 (2)CFS调度器 Linux进程管理 (3)SMP负载均衡 Linux进程管理 (4)HMP调度器 L ...
- 深入理解Linux内核-进程
1.进程的静态特性 进程:程序执行时的一个实例 进程描述符(task_struct): 进程的基本信息(thread_info).指向内存区描述符的指针(mm_struct).进程相关的tty(tty ...
- UNIX环境编程学习笔记(19)——进程管理之fork 函数的深入学习
lienhua342014-10-07 在“进程控制三部曲”中,我们学习到了 fork 是三部曲的第一部,用于创建一个新进程.但是关于 fork 的更深入的一些的东西我们还没有涉及到,例如,fork ...
随机推荐
- navicat连接mysql报10061错
可能原因:mysql服务未启动 解决办法:进入到计算机管理,找到服务,然后找到mysql服务,并启动该服务
- “数学口袋精灵”App的第一个Sprint计划(总结)
“数学口袋精灵”App的第一个Sprint计划 ——11.20 星期五(第十天)第一次Sprint计划结束 第一阶段Sprint的目标以及完成情况: 时间:11月11号~11月20号(10天) ...
- 关于给C盘扩容以及动态磁盘
2019.4.5 周五 磁盘分为基本磁盘和动态磁盘 基本磁盘转动态磁盘是很容易的 https://jingyan.baidu.com/article/59a015e3a3d504f7948865b1. ...
- Activiti的ACT_GE_PROPERTY表初始化
create table ACT_GE_PROPERTY ( NAME_ ), VALUE_ ), REV_ integer, primary key (NAME_) ) ENGINE=InnoDB ...
- 对象函数的readFileSyc类
对于所有的Syc后缀都是表示同步,默认不加是异步操作.
- thnkphp框架面试问题
Thinkphp面试问题 1.如何理解TP中的单一入口文件? 答:ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个项目都有一个统一(但不一定是唯一)的入口.应该说,所有项目都 ...
- Node.js & SSR
Node.js & SSR nest.js https://github.com/nestjs/nest next.js 中文文档 https://nextjs.org/learn/ Grap ...
- jmeter正则提取值 同级目录下的值
https://www.v2ex.com/api/nodes/show.json?name=python 接口返回: { "avatar_large": "//cdn.v ...
- salt-api安装以及简单实使用
1.安装说明 操作系统版本:CentOS Linux release 7.5.1804 (Core) saltstack版本:2018.3.2 已经关闭selinux.firewalld服务. 2.配 ...
- 【题解】 bzoj1923: [Sdoi2010]外星千足虫 (线性基/高斯消元)
bzoj1923,戳我戳我 Solution: 这个高斯消元/线性基很好看出来,主要是判断在第K 次统计结束后就可以确定唯一解的地方和\(bitset\)的骚操作 (我用的线性基)判断位置,我们可以每 ...