目录
在上一篇博客中,我介绍了宏观层面下普遍的操作系统对于进程多种状态的理解,有运行状态、阻塞状态、挂起状态,感兴趣的同学可以看看:操作系统层面下——进程状态讲解
而在Linux操作系统中,进程的状态又是怎样的呢?
Linux进程的各种状态的表示:
从上图可知,Linux操作系统中公有7种类型的进程状态:
其中R状态是运行状态;
S是阻塞状态;
T是暂停状态(浅度睡眠),它其实也算是阻塞状态的一种分支;
D算是深度睡眠状态;
X是死亡状态;
Z是僵尸状态;
t是追踪暂停状态
R状态的测验:
通过查看该进程的状态信息可知,它为R+,R从上面可知为运行状态,这里卖个关子,对于状态后面的加号,一会进行讲解。
S状态的测验:
该代码相比较于试验1的代码多了一个printf函数调用。
运行程序后:
通过右图发现,该程序的状态变成了S+,从开头的状态表示可知,S状态是阻塞状态。为什么进程会变成阻塞状态呢?它不是运行的好好的吗?
之前讲到进程转换成阻塞状态一定是因为该进程在被CPU执行的过程中,需要申请硬件资源