以下内容源于朱有鹏《物联网大讲堂》的课程学习整理,如有侵权,请告知删除。

1、进程的诞生

(1)进程0和进程1

  • 进程0,是操作系统在启动过程中,由内核一点点构建起来;
  • 内核态下的进程1,是由进程0利用内核内部的“fork”创建出来,然后才转变为用户态下的进程1;

(2)fork

(3)vfork

2、进程的消亡

(1)正常终止和异常终止;

(2)进程在运行时需要消耗系统资源(内存、IO),进程终止时,应该完全释放这些资源(如果进程消亡后仍然没有释放,相应资源会丢失)。

(3)linux系统设计时规定

  • 每一个进程退出时,操作系统会自动回收这个进程涉及到的所有的资源;
  • 譬如malloc申请的内容没有free时,当前进程结束时这个内存会被释放;
  • 譬如open打开的文件没有close的在程序终止时也会被关闭;
  • 但是操作系统只是回收了这个进程工作时消耗的内存和IO,而并没有回收这个进程本身占用的内存(8KB,主要是task_struct和栈内存)。

(3)操作系统不能回收进程本身的8KB内存,需要别人来辅助回收。

  • 因此每个进程都需要一个帮助它收尸的人,这个人就是这个进程的父进程。

3、僵尸进程

(1)子进程先于父进程结束

  • 子进程结束后,父进程此时并不一定立即就能帮子进程“收尸”;
  • 在这一段时间内(子进程已经结束,而父进程尚未帮其收尸),子进程就被称为僵尸进程。

(2)子进程除task_struct和栈外,其余内存空间皆已清理。

(3)父进程可以使用wait或waitpid,显式地回收子进程(剩余待回收的)内存资源并且获取子进程退出状态。

(4)父进程也可以不使用wait或者waitpid回收子进程,父进程结束时一样会回收子进程(剩余待回收的)内存资源。

  • 这样设计是为了防止父进程忘记显式调用wait/waitpid来回收子进程从而造成内存泄漏

4、孤儿进程

(1)父进程先于子进程结束,子进程成为一个孤儿进程。

(2)linux系统规定,所有的孤儿进程都自动成为一个特殊进程(进程1,也就是init进程)的子进程。

Linux进程全解6——进程的诞生和消亡相关推荐

  1. Linux进程全解3——进程概念、进程ID、多进程调度原理

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 1.什么是进程? (1)动态过程而不是静态实物: (2)进程就是程序的一次运行过程. 比如一个静态的可执行程序a. ...

  2. Linux进程全解2——进程环境(环境变量、进程运行的虚拟地址空间)

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 1.环境变量 进程运行的环境中的变量. (1)export命令查看环境变量: (2)进程环境表 每一个进程中都有一 ...

  3. 菜鸟必看:wndows xp进程全解

    菜鸟必看:wndows xp进程全解 system process  进程文件: [system process] or [system process]  进程名称: Windows内存处理系统进程 ...

  4. w ndows进,菜鸟必看:wndowsxp进程全解(四)

    loadqm.exe 进程文件: loadqm or loadqm.exe 进程名称: MSN Queue Manager Loader 描述: MSN Queue Manager Loader被随着 ...

  5. 【linux应用编程】-进程全解

    第一点 程序的开始和结束 程序的开始 在操作系统中的应用程序其实在main函数执行前也是需要先执行一段引导代码的,但是我们在写代码之前完全不用考虑引导代码的问题,因为这些都由内部封装完成! 上述的这些 ...

  6. Linux进程全解10——守护进程

    以下内容源于朱有鹏<物联网大讲堂>的课程学习整理,如有侵权,请告知删除. 一.守护进程介绍 1.进程查看命令ps ps -ajx偏向显示各种有关的ID号: ps -aux偏向显示进程各种占 ...

  7. linux应用编程和网络编程-3.4.linux进程全解- 父子关系 exec system函数

    程序的开始和结束 编译链接时的引导代码(构建执行环境)调用main函数 ①编译链接时的链接器:将编译器中引导代码给连接进去和应用程序一起构成最终的可执行程序. ②运行时的加载器:将这个程序加载到内存中 ...

  8. Linux进程全解9——进程状态、system函数、进程间的关系

    以下内容源于朱有鹏<物联网大讲堂>的课程学习整理,如有侵权,请告知删除. 1.进程的5种状态 (1)就绪态 这个进程当前所有运行条件就绪,只要得到CPU时间就能直接运行. (2)运行态 就 ...

  9. Linux·信号量全解

    目录 信号量 进程间 [无名信号量完成 有血缘关系的进程间 互斥] 知识点2[有名信号量 没有血缘进程互斥] 1.创建一个有名信号量 2.信号量的关闭: 3.信号量文件的删除 4.P操作 sem_wa ...

最新文章

  1. 求 1~n 之间素数的个数
  2. 拖着3个箱子,跨越太平洋,求学美帝 那一年我19岁
  3. 发布在即!.NET Core 1.0 RC2已准备就绪
  4. springboot Java实现多文件的zip压缩操作 + 通过浏览器下载文件的两种方式
  5. import com.google.common.* 出错,找不到
  6. CVE-2015-1635(MS15-034 )进行DOS攻击
  7. IDEA 公司,又出新神器,一套代码适应多端!
  8. ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation(自动驾驶领域轻量级模型)
  9. TableView载入WebView的一些小技巧 By 徐
  10. 计算机输入网站打不开,电脑打不开网页怎么办
  11. 计算机自动保存会存到哪里,电脑自动关机前会自动保存吗
  12. Easy Connect 当前IE代理启用了自动配置脚本,不允许使用CS客户端登录
  13. python扫码点餐系统_微信小程序源代码带后台 扫码点餐系统 python Django 前后端分离...
  14. PHP trait 特性
  15. Elasticsearch与最新的log4j2零日漏洞
  16. 机器学习的学习形式分类
  17. Python实现BP神经网络ANN单隐层回归模型项目实战
  18. 参考文献的类型--参考文献里的J、M等字母都代表什么
  19. Python应用之植物大战僵尸2-功夫世界BOSS关卡无限刷金币
  20. 【基本功】深入剖析Swift性能优化

热门文章

  1. BUAA-OO 第二单元作业“电梯调度”总结与思考
  2. Jmeter----5.1 设置中文
  3. git pull时冲突的几种解决方式
  4. mongodb 多表查询
  5. 很多人喜欢露脚踝你觉得时尚吗?
  6. day13 迭代器和生成器
  7. 【温故知新】——原生js中常用的四种循环方式
  8. php中preg_match用户名正则实例
  9. 搭建wordpress开发环境
  10. 晚上美容护肤10要诀 - 健康程序员,至尚生活!