程序就是存储在磁盘上的可执行文件,程序被加载到内存中开始运行叫进程。一个程序可以被多次加载生成多个进程,进程就是处于活动状态的计算机程序。
在终端可通过ps命令可以查看系统中相关进程的Cpu使用率的信息。
ps 还可以加以下命令来查看进程状态:
a——所有用户的有控制终端的进程
x——无终端控制的进程
u——显示进程的详细信息
w——以更大的列宽显示
然后可以看到各种进程参数:
USER | PID | %CPU | %MEM | STAT |
---|---|---|---|---|
用户名 | 进程号 | CPU占用比 | 内存占用比 | 进程状态 |
START | TIME | COMMAND | VSZ | RSS |
进程启动时间 | 进程运行时间 | 进程启动命令 | 虚拟内存使用的字节数 | 物理内存使用的字节数 |
Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。
可执行状态(R)
又称运行状态,只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的进程控制块被放入对应CPU的可执行队列中。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。
可被唤醒的睡眠状态(S)
处于这个状态的进程因为等待其他信号而被挂起。这些进程结构被放入对应事件的等待队列中。当这些事件(由外部中断触发、或由其他进程触发)发生时,对应的等待队列中的一个或多个进程将被唤醒。
不可被唤醒的睡眠(D)
这个状态的进程不能被系统中断、获得资源、收到信号等动作唤醒,只能被系统唤醒。
该状态的进程甚至连 kill -9 也不能杀死它
暂停状态(T)
也称为跟踪状态。向进程发送一个SIGSTOP信号,它就会因响应该信号而进入暂停状态,处于该状态的进程不能被SIGCONT信号唤醒。只能等到调试进程通过系统调用执行PTRACE_CONT、PTRACE_DETACH等操作,或调试进程退出,被调试的进程才能恢复运行状态。
退出-僵尸状态(Z)
该状态的进程也叫僵尸进程,是由于作为子进程的时候退出,而其父进程未能及时回收该进程的全部资源,剩余资源里面保存了进程的退出码、以及一些统计信息。
退出状态(X)
就是其资源全部释放,不留一点空壳,连ps命令也捕捉不到这个状态的进程。