进程的状态

上周,我在学习Linux系统进程状态时,发现了一个挺有意思的点。
Linux系统里,进程状态分得挺细,有五种:运行态、不可中断休眠态、可中断休眠态、停止态和僵尸态。
比如,运行态-R,就是进程正在运行或者准备运行的状态;不可中断休眠态-D,通常是进程在等待磁盘I/O操作完成时进入的状态。

2 02 3 年,我那个朋友问了我一个问题,说为什么有些进程会变成僵尸态。
我解释说,僵尸态-Z是进程结束但还没消亡的状态,比如父进程没有读取子进程的退出状态,子进程就会变成僵尸态。
这挺浪费内存的,因为进程控制块(PCB)还在,但是进程已经结束了。

我还提到,孤儿进程是挺有意思的,就是父进程先退出了,子进程就成了孤儿进程。
这时候,系统会自动让1 号init进程领养这些孤儿进程。

说到进程状态,我还想到一个命令,就是ps。
ps-l可以列出与登录有关的进程信息,ps-aux可以查询内存中的进程信息。
不过,要注意的是,不同的系统,ps命令的参数和功能可能有所不同。

我那个朋友听完后,说:“哦,原来进程状态还挺复杂的。
” 我笑了笑,说:“对啊,这就是计算机系统的魅力之一。
” 算了,你看着办吧。

点进来!告诉你什么是三态模型、五态模型、七态模型、什么是Linux操作系统的进程状态转换!

三态模型:就绪、运行、等待,五态模型多新建和终止,七态模型再加僵死和挂起。
Linux进程状态:新建、就绪、运行、等待、僵死、挂起、终止。
新建态:进程刚创建,内存分配,内核初始化。
就绪态:准备执行,未调度。
运行态:CPU上执行。
等待态:等待事件,暂停执行。
僵死态:结束但信息未清,等父进程回收。
挂起态:特定事件暂停,可恢复。
Linux管理转换:调度器、信号、控制函数,状态随需转换。

控制进程的三种类型

前台后台进程:Shell启动的,Ctrl+C能停的就是这个。
后台进程不干扰你操作。

批处理进程:终端不用管,丢作业队列排队跑。
脚本运行属于这玩意儿。

守护进程:终端不用,后台一直跑。
系统一启动就跟着。
init就是个关键程序,内核启动后第一个用户进程。

进程状态:三种。

运行:CPU上跑。
多核CPU可能同时几个在跑。

就绪:CPU没了,其他资源都有。
CPU分到你立马能跑。

阻塞:CPU没了,还差事儿没干完。
主动让出CPU,等事儿办完再要。

定义:进程就是跑程序时系统分资源的那个。
CPU内存都是。

组成:程序代码一块,程序数据一块,控制块一块。