引言
- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
今天带大家了解一下进程的状态分析,大家看到题目,可能懵了,说这玩意有啥好分析的啊,进程不就三种状态嘛?要么运行,要么等待运行,要么堵塞,这不是在进程的生命周期一文中不是说的明明白白了嘛,哈哈,是,不过角度不同,看的方向也不同,得出的结论也不同,让我们一起深入了解一下吧。
进程状态
我们使用top命令查看进程,然后看s列,该列是进程的状态,可以看到s和r,我一一介绍给大家。
进程的状态如下:
- S 是
Interruptible Sleep的缩写,也就是可中断状态睡眠,表示该进程暂时被系统挂起。正在等待某一事件发生,如果事件发生,它会被唤醒并进入R 状态。 - R 是
Running的缩写,进程已经等到事件发生了,然后要么进入cpu的就绪队列等待运行,要么就被cpu运行。 - D 是
Disk Sleep的缩写,恰恰和S相反,也就是不可中断状态睡眠,一般表示进程正在跟硬件交互,并且交互过程不允许被其他进程或中断打断,比如正在进行I/O。 - Z 是
Zombie的缩写,它表示僵尸进程,也就是进程实际上任务已经做完了,但是父进程还没有回收它的资源(比如进程的描述符、PID 等)。 - I 是
Idle的缩写,也就是空闲状态,用在不可中断睡眠的内核线程上。前面说了,硬件交互导致的不可中断进程用D表示,D状态的进程会导致平均负载升高, 但I 状态的进程却不会。 - T 是
Stopped的缩写,表示进程处于暂停状态。 - t 是
Traced的缩写, 表示进程处于跟踪状态。 - X 是
Dead的缩写, 表示进程处于消亡状态。
你只要给进程发送一个SIGSTOP信号,它就会进入暂停状态,再发一个进程就停止运行。