目录
Linux操作系统进程状态
1. 新建
2. 运行
3. 阻塞
4. 挂起
Linux内核进程状态
进程状态查看
Linux操作系统进程状态
1. 新建
即字面意思,将进程资源(PCB)加载到内存,运行状态之前就是新建。
2. 运行
进程正在运行或者task_struct 结构体在队列中排队,就叫运行态。
3. 阻塞
阻塞状态:等待非CPU资源就绪。解释如下:
系统中存在各种资源,不仅仅是CPU中,还有网卡磁盘等外设,进程加载是可能还需要从外设中加载资源,CPU运转速度很快,但是其他外设速度相对来说很慢,当一个进程在CPU等待队列中很快把资源加载完,然后到外设等待队列去等着加载资源,由于外设速度很慢,此时进程就在阻塞队列等着,即阻塞状态。
4. 挂起
挂起状态:当内存不足的时候,OS会适当将一些长时间不执行的代码和数据置换到磁盘,这些进程此时的状态就是挂起!
Linux内核进程状态
为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(
在 Linux内核里
,进程有时候也叫做任务)。
下面的状态在kernel源代码里定义:
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 */
};
- R:运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。(对应上面的运行态)
- S:睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠,即可以接收信号并响应)。(对应上面的阻塞状态)
- D:磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束(不会被强制杀掉)。
- T:停止状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。
- X:死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态
- Z:僵尸状态。下篇博客详细讲解。
进程状态查看
ps aux / ps axj 命令