11.1进程定义
进程给出以下定义:
一个正在运行的程序。
一个正在计算机上执行的程序实例。
能分配给处理器并由处理器执行的实体。
也可以把进程当成由一组元素组成的实体,进程的两个基本元素是程序代码(可能被执行相同程序的其他进程共享)与和代码相关联的数据集。假设处理器开始执行该程序代码,且我们把这个执行实体称为进程。在进程执行时,任意给定一个时间,进程都可以惟一地被表征为以下元素:
标识符:跟这个进程相关的惟一标识符,用来区别其他进程。
状态:如果进程正在执行,那么进程处于执行态。
优先级:相对于其他进程的优先级。
程序计数器:程序中即将被执行的下一条指令的地址。
内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享内存块的指针。
上下文数据:进程执行时处理器的寄存器中的数据。
I/O 状态信息:包括显式的 I/O 请求、分配给进程的 I/O 设备(例如磁带驱动器)和被进程使用的文件列表等。
审计信息:可包括处理器时间总和、使用的时钟数总和、时间限制、审计号等。
引用的被称为一个进程控制块,该控制块由操作系统创健和管理。

11.2进程状态
1. 运行态(Running)
-
定义:进程正在占用 CPU,执行程序指令(对应你提到的 "执行态")。
-
关键特征:同一时刻,单 CPU 系统中只有一个进程处于该状态;多 CPU 系统中,运行态进程数不超过 CPU 核心数。
-
示例:打开的浏览器正在加载网页、视频播放器正在解码视频。
2. 就绪态(Ready)
-
定义:进程已具备所有执行条件(如资源已分配、代码已加载),等待 CPU 调度。
-
关键特征:进程排队等待 CPU,一旦获得 CPU,立即转为运行态。
-
示例:同时打开的多个文档编辑器,除当前正在操作的一个(运行态),其余均处于就绪态。
3. 阻塞态(Blocked/Waiting)
-
定义:进程因等待某类事件(如 I/O 完成、资源分配、信号)而暂停执行,即使有 CPU 也无法运行。
-
关键特征:进程主动放弃 CPU,事件满足后需先转为就绪态,再等待调度。
-
示例:进程发起磁盘文件读取请求后,等待数据传输完成的状态;进程等待键盘输入的状态。
4. 新建态(New)
-
定义:进程刚被创建,操作系统尚未完成资源分配(如内存分配、标识符分配)的初始状态。
-
关键特征:完成资源分配后,直接转为就绪态,等待 CPU 调度。
-
示例:双击软件图标后,操作系统开始创建进程但未完成初始化的短暂状态。
5. 终止态(Terminated)
-
定义:进程完成执行(正常退出)或因错误 / 信号终止(异常退出),操作系统回收其资源的状态。
-
关键特征:进程不再参与调度,资源(内存、CPU、I/O 设备)被完全释放。
-
示例:关闭文档编辑器后,进程执行完收尾操作(保存配置、释放内存)后的状态。

状态转换逻辑(核心流转路径)
-
新建态 → 就绪态:操作系统为新进程分配完内存、标识符等资源,进程具备执行条件。
-
就绪态 → 运行态:CPU 空闲时,调度器选择优先级最高(或按调度算法)的就绪进程,分配 CPU。
-
运行态 → 就绪态:时间片用完(如 CPU 分配给该进程的时间结束),或有更高优先级进程进入就绪态,当前进程被抢占 CPU。
-
运行态 → 阻塞态:进程执行过程中需要等待事件(如调用
read函数读取文件、等待信号量),主动放弃 CPU。 -
阻塞态 → 就绪态:进程等待的事件完成(如文件读取成功、信号到达),由操作系统唤醒,转为就绪态等待调度。
-
运行态 → 终止态:进程执行完
main函数(正常退出),或因错误(如段错误)、信号(如kill -9)终止。
