Bootstrap

Linux进程状态简单分析

程序就是存储在磁盘上的可执行文件,程序被加载到内存中开始运行叫进程。一个程序可以被多次加载生成多个进程,进程就是处于活动状态的计算机程序。

在终端可通过ps命令可以查看系统中相关进程的Cpu使用率的信息。
ps 还可以加以下命令来查看进程状态:
a——所有用户的有控制终端的进程
x——无终端控制的进程
u——显示进程的详细信息
w——以更大的列宽显示
然后可以看到各种进程参数:

USERPID%CPU%MEMSTAT
用户名进程号CPU占用比内存占用比进程状态
STARTTIMECOMMANDVSZRSS
进程启动时间进程运行时间进程启动命令虚拟内存使用的字节数物理内存使用的字节数

Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。

可执行状态(R)
又称运行状态,只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的进程控制块被放入对应CPU的可执行队列中。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。
可被唤醒的睡眠状态(S)
处于这个状态的进程因为等待其他信号而被挂起。这些进程结构被放入对应事件的等待队列中。当这些事件(由外部中断触发、或由其他进程触发)发生时,对应的等待队列中的一个或多个进程将被唤醒。

不可被唤醒的睡眠(D)
这个状态的进程不能被系统中断、获得资源、收到信号等动作唤醒,只能被系统唤醒。
该状态的进程甚至连 kill -9 也不能杀死它

暂停状态(T)
也称为跟踪状态。向进程发送一个SIGSTOP信号,它就会因响应该信号而进入暂停状态,处于该状态的进程不能被SIGCONT信号唤醒。只能等到调试进程通过系统调用执行PTRACE_CONT、PTRACE_DETACH等操作,或调试进程退出,被调试的进程才能恢复运行状态。

退出-僵尸状态(Z)
该状态的进程也叫僵尸进程,是由于作为子进程的时候退出,而其父进程未能及时回收该进程的全部资源,剩余资源里面保存了进程的退出码、以及一些统计信息。

退出状态(X)
就是其资源全部释放,不留一点空壳,连ps命令也捕捉不到这个状态的进程。

;