Linux中进程的状态2
学习完进程的调度和等待我们接着学习进程的具体状态表示
进程的状态
在Linux中进程的状态一共有7种。如下
接下来我会用代码来验证这几个状态,这个D状态暂时不验证,看看就好。
R(running)&&S(sleep)
进程处在运行队列中就是处在运行状态了。
我们先弄一个死循环程序,通过这个程序来进行验证。
通过查询code的进程状态可知还没运行时处于S状态非常合理,运行时里面处于R状态,后面有个+号就说明是处于前台运行的,我们可以直接用ctrl终止。
不对呀,code都在运行为什么是S,那是因为code.c里面有一个sleep,处于R状态是会一直调用cpu的,这里由于sleep了就不能是R了。
现在删除sleep行再看细节。
也是终于刷出来了R+状态。如果还是S+的就这个显示进程状态就指令多运行基础
还有一种可以促使其变成S+就是用scanf强行等待输入,如下:
然后我们可以最后将进程杀掉。使用-9选项通过进程的pid杀掉进程。
D(disk sleep)
disk是磁盘的意思,这个选项也是阻塞状态的一种,是不可中断的睡眠,深度睡眠,上面的S是可以中断的浅睡眠,多发于向磁盘中写入大量文件。
T(stopped) && t(tracing stop)
程序做了非法但是不致命的操作而被操作系统暂停了就会出现T状态,简单来说就是进程被暂停了。
保证程序在运行状态,然后运行,在另一个主机进行暂停程序操作。
t状态是当进程被追踪时遇到断点被截停了就是t,当然这个就需要调试之后才知道了,这个我们后面再说。感兴趣的话自己去做一下。