这里我们说的五大状态实际上是针对task_struct里面的state成员取值的
long state;
这里整理了一下五种状态介绍:
state | comments |
---|---|
running(R) | 该状态表示task运行,具体来说可分为running和runnable,一个表示正在CPU上运行,一个表示挂载RQ上准备就绪,等待分配CPU |
interruptible(S) | 该状态表示进程因为等待一些条件而被阻塞而所处的状态,常见的就是资源、锁什么的,一旦就绪那么立即转为running态 |
uninterruptible(D) | 该状态表示进程进入sleep,并且无法被打断,比如此时我们用kill指令就无法杀死,这些状态最常见的就在于与硬件交互,比如IO read/write这种,无法打断防止出现异常,还有就是执行vfork下,父进程就是这个状态 |
traced(T) | |
stopped(T) |