转载博文:

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 :
所有进程的祖先叫做进程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 进程相关推荐

  1. 深入理解Linux守护进程

    深入理解Linux守护进程Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daem ...

  2. 微视linux swapper进程

    swapper是linux第一个线程,也就是0号线程.很多书里面都有详细介绍. 为什么linux启动之后,swapper线程就开始运行了呢? 我认为主要有两点: 第一点:静态部分. swapper线程 ...

  3. 理解Linux的进程,线程相关的各类ID:PID,LWP,TID,TGID

    最近实验室遇到了一个关于PID的问题,让我也跟着学习一下,查看了一下相关资料,找到一篇关于Linux进程和线程的各种ID的介绍,所以转载了过来. 作者:wipan 来源:cnblogs 地址:http ...

  4. Linux swapper进程 init进程

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

  5. linux僵尸进程理解,Linux僵尸进程详细解析

    在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为 ...

  6. linux下查看进程的线程数,linux查看进程的线程数

    top -H -p $PID  #查看对应进程的那个线程占用CPU过高 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行 ...

  7. 深入理解Linux启动过程 0号进程,1号进程

    深入理解Linux启动过程 Linux系统的启动过程由很多阶段组成,这篇博客从初始化引导程序到第一个用户空间应用程序探索Linux启动进程. 我们先从Linux启动的顶层视图开始分析,以便能有一个整体 ...

  8. 深入理解Linux操作系统守护进程的意义

    深入理解Linux操作系统守护进程的意义 Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守 ...

  9. 深刻理解 Linux 进程间七大通信(IPC)

    前言 网络编程是 Linux C/C++的面试重点,今天我就来聊一聊进程间通信的问题,文章末尾列出了参考资料,希望帮助到大家. 篇幅有点长,希望大家耐心阅读. Linux 下的进程通信手段基本上是从 ...

最新文章

  1. 5G 信令流程 — 5GS 的 gNB 切换(Xn/N2 Handover)管理
  2. Qt之QHeaderView排序
  3. Redis在Windows+linux平台下的安装配置(转)
  4. C# 使用 HelpProvider 控件调用帮助文件
  5. axis为amchart左右轴的参数
  6. CodeSite日志使用
  7. 百度张亚勤当选美国艺术与科学院院士:今年当选的唯一华人科学家
  8. 浅谈C#中的枚举 【转自http://www.cnblogs.com/liyingyi/archive/2005/12/28/306772.html】
  9. 创意对抗网络(CANs)你知多少?
  10. Andriod 从源码的角度详解View,ViewGroup的Touch事件的分发机制
  11. UTF-8转码GBK
  12. r语言和python的区别-Python和R语言的区别_Python与R的区别和联系
  13. synchronized锁住的对象
  14. redis安装教程和redis集群搭建--主从复制(读写分离)、中间人模式(主仆兼具、去中心化)、反客为主、哨兵模式,从实战出发的保姆级别教程
  15. SpringBoot系列之(三):启动过程
  16. Android 12 Watchdog(4) Trace生成过程
  17. 第三方登录---微信登录
  18. PHP处理CODE128C条形码数据为标准的打印机ESC指令
  19. 首曲线、计曲线、间曲线和助曲线
  20. 乖离率背离公式_乖离率多少才合理 BIAS指标计算公式-BIAS-技术指标-股票入门基础知识学习网...

热门文章

  1. 浅谈区间最值操作与历史最值问题
  2. 【Unity 03】高通 AR SDK基本使用以及项目发布
  3. python界面GUI设计、tkinter设计界面初步教程
  4. springboot整合shiro + jwt + redis实现权限认证(上手即用)
  5. samtools使用总结
  6. 国内洗地机品牌有哪些,分享几款好用的洗地机
  7. VUE实现v-for循环遍历图片方法
  8. TESSY测试技巧一:展开所有数组元素
  9. 我是锦锋,谈谈拿到66个大数据校招offer的经历
  10. 怎样在手机上写日记?