进程有哪些状态
3 分钟阅读
•
538 字
+
161 词
就绪态
:指进程其他资源已经准备好,
只差cpu调度
了
运行态
:指进程当前正在被cpu执行
阻塞态
:指进程由于
其他资源还没准备好
,所以让出CPU,等待资源的就绪
LINUX中的六种状态:
- R运行状态(running):并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列。
- S睡眠状态(sleeping):意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠(interruptible sleep))
- D磁盘休眠状态(Disk sleep):有时候也叫不可中断睡眠状态(uninterruptible sleep), 在这个状态的进程通常会等待IO的结束 。即使在睡眠状态,OS也杀不掉。
- T停止状态(stopped):可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。
- Z僵尸状态(Zombies):子进程退出并且父进程没有读取到子进程退出的返回代码时,就会产生僵死(尸)进程, 僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态。
- 因为我们必须得保证一个进程跑完,启动这个进程的父进程或是操作系统必须得知道这个进程退出时,把我们交代得任务完成得怎么样了,成功还是失败了。必须要知道子进程得运行结果。 当子进程退出的时候,它的信息不会立即释放,会存在PCB中,没有人读取,这个状态不会被释放掉,这个状态就是僵尸状态。
- X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态。当父进程读取子进程的返回结果时,子进程立刻释放资源。死亡状态是非常短暂的,几乎不可能通过ps命令捕捉到。