赞
踩
运行状态,在处理队列的时候,所有在排队的进程都是处于R状态的。
#include<stdio.h>
int main()
{
while(1);
}
查看进程,发现是R+状态,表示处于前台正在运行状态。
在进程需要使用磁盘进行读写的时候,需要磁盘为其分配资源再由CPU对其进行读写,但如果磁盘没有就绪,那么此时操作系统会将想要调用磁盘资源的进程放到一个名为等待队列的队列中。
处于该队列中的进程处于S状态。当磁盘空间就绪后,进程重新加入运行队列进入R状态。
S状态表示浅度睡眠,是可以终止的。深度睡眠D是不可以终止的。
操作系统中拒绝的想要将信息写到磁盘的进程将会进入深度睡眠状态。
//测试S进程
while(1)
{
printf("test S proess\n");
}
运行后发现处于S+状态,这时因为printf需要对外设-显示器进行打印的,而显示器比较慢,等待其就绪是需要时间的,因此大部分时间处于S+状态,只有少部分时间处于R状态。
处于暂停状态,此时信息没有任何更新,是完全的暂停。
而处于S状态的进程会有一些数据更新,比如睡眠了多少秒等。
死亡状态,CPU会进行资源的回收,包括PCB和代码数据等。
僵尸状态,即濒死状态。
这一状态的作用是为了帮助我们在进程死亡之前了解它是自然退出还是被OS或者其他程序所干掉的。此时会产生进程退出的信息,并将其写入task_struct(PCB)中。
我们知道处于X状态的进程中的资源会被回收,回收者为该进程的父进程。如果还没有对其进行回收的话,那么此时该进程处于Z状态。
追踪状态,例如调试过程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。