Linux进程全解9——进程状态、system函数、进程间的关系
以下内容源于朱有鹏《物联网大讲堂》的课程学习整理,如有侵权,请告知删除。
1、进程的5种状态
(1)就绪态
- 这个进程当前所有运行条件就绪,只要得到CPU时间就能直接运行。
(2)运行态
- 就绪态时得到了CPU就进入运行态开始运行。
(3)僵尸态
- 进程已经结束但是父进程还没来得及回收。
(4)等待态(浅度睡眠&深度睡眠)
- 进程在等待某种条件,条件成熟后可进入就绪态。
- 等待态下就算你给它CPU调度,进程也无法执行。
- 浅度睡眠等待时,进程可以被(信号)唤醒;
- 深度睡眠等待时,不能被唤醒,只能在满足等待的条件时,才能结束睡眠状态。
(5)暂停态
- 暂停并不是进程的终止,只是被别人(信号)暂停了,可以恢复。
2、进程各种状态之间的转换图
3、system函数简介
(1)system函数 = fork+exec
(2)原子操作
- 原子操作意思就是整个操作一旦开始就会不被打断的执行完。
- 原子操作的好处就是不会被人打断(不会引来竞争状态),坏处是自己单独连续占用CPU时间太长影响系统整体实时性。
- 因此应该尽量避免不必要的原子操作,就算不得不原子操作也应该尽量原子操作的时间缩短。
(3)使用system调用ls
4、进程关系
(1)无关系
(2)父子进程关系
(3)进程组(group):由若干进程构成一个进程组
(4)会话(session):就是进程组的组