码迷,mamicode.com
首页 > 系统相关 > 详细

进程状态

时间:2017-09-09 19:37:55      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:eve   使用   查看   调用   height   操作系统   空闲   ati   values   

进程的基本状态:

从原理上讲,进程的基本状态有3个:
1) 运行:某个CPU空闲,该CPU对应的等待队列中的其中一个就绪态进程就得以调度。
2) 就绪:资源已就绪,只等CPU空闲。或者时间片用完,被加入队尾等待调度。
3) 阻塞:资源不满足,而被暂时挂起的状态,比如IO阻塞。也称为等待或睡眠状态。

 

Linux进程状态:

1) R: TASK_RUNNING,可执行状态,只有此类进程才可能被进程调度器选中执行。
    每个CPU同一时刻只能选该CPU可执行队列中的其中一个进程运行。
    R是Running or runnable的意思。
    操作系统原理上习惯区分Running和Ready状态,在Linux上R状态同时涵盖了这两种状态。
2) S: TASK_INTERRUPTIBLE,可中断睡眠态。进程在等待某个事件的到来,处于CPU的等待队列中。
    S是Interruptible Sleep的意思。等待的事件通常是某个信号量、某个socket连接等。
    ps时系统中大部分进程都处于这个状态,原因是CPU个数有限,每个CPU只能有一个进程处于R状态,其余的只能处于S状态(?)
3) D: TASK_UNINTERRUPTIBLE,不可中断睡眠态。
    一个非常罕见的状态,通常很短暂,ps一般捕捉不到。
    D是Disk Sleep的意思,意指由于IO资源得不到满足而处于等待中。vfork()后父进程会短暂进入该状态,直到子进程调用exit()或exec()。
    该状态的威力在于kill杀不掉。
4) Z: TASK_DEAD - EXIT_ZOMBIE,退出状态。
    Z是Zombie的意思,即僵尸。这也是一个非常短暂的状态,ps一般不捉不到。
    进程在退出的过程中,都会先经过僵尸状态Z。子进程退出过程中,内核会给父进程发送一个信号通知父进程来收尸(通常是SIGCHLD)。父进程通过调用wait()或waitpid()来清理子进程在系统中残存的状态信息。
    父进程调用fork()后让子进程先退出但不调用wait()或waitpid()则子进程就处于Z状态。

 

 

内核中的定义:
/usr/src/linux/fs/proc/array.c

static const char *task_state_array[] = {
"R (running)",
"S (sleeping)",
"D (disk sleep)",
"T (stopped)",
"T (tracing stop)",
"Z (zombie)",
"X (dead)"
};

 

ps中的释义:
PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers
(header "STAT" or "S") will display to describe the state of a process.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by its parent.

 

进程的pid:
新创建进程的pid是逐渐递增的关系,刚释放的pid不会被立即占用,直到没有可用pid时才会从头找已释 
放的pid使用。
因此,ps查看进程状态时两次pid相同,说明进程并未退出,而绝不会是退出后又被立即拉起。
换句话说,当前比如有两个进程pid(A)=123,pid(B)=124,进程B退出后,创建进程C时,pid(C)只会是 
125,不会占用124这个pid。

进程状态

标签:eve   使用   查看   调用   height   操作系统   空闲   ati   values   

原文地址:http://www.cnblogs.com/momo0609/p/7498963.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!