Linux进程状态如何切换,Linux 8种进程状态及状态转换

linux 8种进程状态

通过ps aux可以看到进程的状态。

O:进程正在处理器运行,这个状态从来没有见过.

S:休眠状态(sleeping)

R:等待运行(runable)R Running or runnable (on run queue) 进程处于运行或就绪状态

I:空闲状态(idle)

Z:僵尸状态(zombie)

T:跟踪状态(Traced)

B:进程正在等待更多的内存页

D: 不可中断的深度睡眠,一般由IO引起,同步IO在做读或写操作时,cpu不能做其它事情,只能等待,这时进程处于这种状态,如果程序采用异步IO,这种状态应该就很少见到了

其中就绪状态表示进程已经分配到除CPU以外的资源,等CPU调度它时就可以马上执行了。运行状态就是正在运行了,获得包括CPU在内的所有资源。等待状态表示因等待某个事件而没有被执行,这时候不耗CPU时间,而这个时间有可能是等待IO、申请不到足够的缓冲区或者在等待信号。

在Linux源码中, 进程状态的定义在fs/proc/array.c文件中。

/*

* The task state array is a strange "bitmap" of

* reasons to sleep. Thus "running" is zero, and

* you can test for combinations of others with

* simple bit tests.

*/

static const char * const task_state_array[] = {

"R (running)", /* 0 */

"S (sleeping)", /* 1 */

"D (disk sleep)", /* 2 */

"T (stopped)", /* 4 */

"t (tracing stop)", /* 8 */

"X (dead)", /* 16 */

"Z (zombie)", /* 32 */

};

进程状态转换

linux 8种进程状态 通过ps aux可以看到进程的状态。 O:进程正在处理器运行,这个状态从来没有见过. S:休眠状态(sleeping) R:等待运行(runable)R Running or runnable (on run queue) 进程处于运行或就绪状态 I:空闲状态(idle) Z:僵尸状态(zombie) T:跟踪状态(Traced) B:进程正在等待更多的内存页 D: 不可中断的深度睡眠,一般由IO引起,同步IO在做读或写操作时,cpu不能做其它事情,只能等待,这时进程处于这种状态,如果程序采用异步IO,这种状态应该就很少见到了 其中就绪状态表示进程已经分配到除CPU以外的资源,等CPU调度它时就可以马上执行了。运行状态就是正在运行了,获得包括CPU在内的所有资源。等待状态表示因等待某个事件而没有被执行,这时候不耗CPU时间,而这个时间有可能是等待IO、申请不到足够的缓冲区或者在等待信号。 在Linux源码中, 进程状态的定义在fs/proc/array.c文件中。 /* * The task state array is a strange "bitmap" of * reasons to sleep. Thus "running" is zero, and * you can test for combinations of others with * simple bit tests. */ static const char * const task_state_array[] = { "R (running)", /* 0 */ "S (sleeping)", /* 1 */ "D (disk sleep)", /* 2 */ "T (stopped)", /* 4 */ "t (tracing stop)", /* 8 */ "X (dead)", /* 16 */ "Z (zombie)", /* 32 */ }; 进程状态转换
经验分享 程序员 微信小程序 职场和发展