深入理解 linux swapper 进程
转载博文:
http://blog.csdn.net/bengda/article/details/7681327
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 进程一直存活,因为它创建和监控在操作系统外层执行的所有进程的活动。
深入理解 linux swapper 进程相关推荐
- 深入理解Linux守护进程
深入理解Linux守护进程Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daem ...
- 微视linux swapper进程
swapper是linux第一个线程,也就是0号线程.很多书里面都有详细介绍. 为什么linux启动之后,swapper线程就开始运行了呢? 我认为主要有两点: 第一点:静态部分. swapper线程 ...
- 理解Linux的进程,线程相关的各类ID:PID,LWP,TID,TGID
最近实验室遇到了一个关于PID的问题,让我也跟着学习一下,查看了一下相关资料,找到一篇关于Linux进程和线程的各种ID的介绍,所以转载了过来. 作者:wipan 来源:cnblogs 地址:http ...
- Linux swapper进程 init进程
进程0 : 所有进程的祖先叫做进程0 ,idle 进程或因为历史的原因叫做swapper 进程.它是在 linux 的初始化阶段从无到有的创建的一个内核线程.这个祖先进程使用静态分配的数据结构. 在 ...
- linux僵尸进程理解,Linux僵尸进程详细解析
在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为 ...
- linux下查看进程的线程数,linux查看进程的线程数
top -H -p $PID #查看对应进程的那个线程占用CPU过高 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行 ...
- 深入理解Linux启动过程 0号进程,1号进程
深入理解Linux启动过程 Linux系统的启动过程由很多阶段组成,这篇博客从初始化引导程序到第一个用户空间应用程序探索Linux启动进程. 我们先从Linux启动的顶层视图开始分析,以便能有一个整体 ...
- 深入理解Linux操作系统守护进程的意义
深入理解Linux操作系统守护进程的意义 Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守 ...
- 深刻理解 Linux 进程间七大通信(IPC)
前言 网络编程是 Linux C/C++的面试重点,今天我就来聊一聊进程间通信的问题,文章末尾列出了参考资料,希望帮助到大家. 篇幅有点长,希望大家耐心阅读. Linux 下的进程通信手段基本上是从 ...
最新文章
- 5G 信令流程 — 5GS 的 gNB 切换(Xn/N2 Handover)管理
- Qt之QHeaderView排序
- Redis在Windows+linux平台下的安装配置(转)
- C# 使用 HelpProvider 控件调用帮助文件
- axis为amchart左右轴的参数
- CodeSite日志使用
- 百度张亚勤当选美国艺术与科学院院士:今年当选的唯一华人科学家
- 浅谈C#中的枚举 【转自http://www.cnblogs.com/liyingyi/archive/2005/12/28/306772.html】
- 创意对抗网络(CANs)你知多少?
- Andriod 从源码的角度详解View,ViewGroup的Touch事件的分发机制
- UTF-8转码GBK
- r语言和python的区别-Python和R语言的区别_Python与R的区别和联系
- synchronized锁住的对象
- redis安装教程和redis集群搭建--主从复制(读写分离)、中间人模式(主仆兼具、去中心化)、反客为主、哨兵模式,从实战出发的保姆级别教程
- SpringBoot系列之(三):启动过程
- Android 12 Watchdog(4) Trace生成过程
- 第三方登录---微信登录
- PHP处理CODE128C条形码数据为标准的打印机ESC指令
- 首曲线、计曲线、间曲线和助曲线
- 乖离率背离公式_乖离率多少才合理 BIAS指标计算公式-BIAS-技术指标-股票入门基础知识学习网...