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

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


1、进程的5种状态

(1)就绪态

  • 这个进程当前所有运行条件就绪,只要得到CPU时间就能直接运行。

(2)运行态

  • 就绪态时得到了CPU就进入运行态开始运行。

(3)僵尸态

  • 进程已经结束但是父进程还没来得及回收。

(4)等待态(浅度睡眠&深度睡眠)

  • 进程在等待某种条件,条件成熟后可进入就绪态。
  • 等待态下就算你给它CPU调度,进程也无法执行。
  • 浅度睡眠等待时,进程可以被(信号)唤醒;
  • 深度睡眠等待时,不能被唤醒,只能在满足等待的条件时,才能结束睡眠状态。

(5)暂停态

  • 暂停并不是进程的终止,只是被别人(信号)暂停了,可以恢复。

2、进程各种状态之间的转换图

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

3、system函数简介

(1)system函数 = fork+exec

(2)原子操作

  • 原子操作意思就是整个操作一旦开始就会不被打断的执行完。
  • 原子操作的好处就是不会被人打断(不会引来竞争状态),坏处是自己单独连续占用CPU时间太长影响系统整体实时性。
  • 因此应该尽量避免不必要的原子操作,就算不得不原子操作也应该尽量原子操作的时间缩短。

(3)使用system调用ls


4、进程关系

(1)无关系

(2)父子进程关系

(3)进程组(group):由若干进程构成一个进程组

(4)会话(session):就是进程组的组