Appearance
进程基本概念
考情分析
进程管理在 408 真题中累计考查约 204 分(2009-2026),是操作系统中分值最高的章节。其中进程与线程小节约 34 分,属于 🔥🔥 中高频考点。
如果所有程序只能串行执行,CPU 大部分时间都在等 I/O——怎样让多个程序"同时"推进?操作系统的答案是把"正在执行的程序"抽象成进程。
进程的定义
进程(Process)是程序的一次执行过程,是系统进行资源分配的基本单位。
注意区分
在未引入线程的系统中,进程既是资源分配的基本单位,也是调度的基本单位。引入线程后,线程成为调度的基本单位,进程仅作为资源分配的基本单位。408 真题多次考查此区分。
程序是静态的代码文件,进程是动态的执行实体。同一个程序可以创建多个进程(比如打开两个记事本窗口),每个进程都有自己独立的地址空间和运行状态。
进程的组成
一个进程由三部分组成:
| 组成部分 | 说明 |
|---|---|
| PCB | 进程存在的唯一标志,包含进程管理所需的全部信息 |
| 程序段 | 进程要执行的代码 |
| 数据段 | 进程运行过程中的数据(变量、堆、栈等) |
进程控制块 PCB
PCB 是操作系统中最核心的数据结构之一。操作系统通过 PCB 来感知进程的存在并管理进程——就像医院通过病历卡管理病人一样,没有病历卡,医院就"不知道"这个病人存在。
c
// PCB 的典型结构(简化)
struct PCB {
int pid; // 进程标识符
int uid; // 用户标识符
int state; // 进程状态
int priority; // 优先级
// 处理机状态(上下文)
int PC; // 程序计数器
int PSW; // 程序状态字
int registers[16]; // 通用寄存器
// 进程调度信息
int arrival_time; // 到达时间
int service_time; // 服务时间
// 资源信息
int *memory_base; // 内存基址
int open_files[20]; // 打开文件列表
struct PCB *next; // 链接指针
};PCB 的信息可以分为四类:
| 类别 | 包含信息 | 作用 |
|---|---|---|
| 进程标识信息 | PID(进程ID)、UID(用户ID)、PPID(父进程ID) | 唯一标识一个进程 |
| 处理机状态信息 | PC、PSW、通用寄存器、栈指针 | 上下文切换时保存/恢复 |
| 进程调度信息 | 状态、优先级、调度策略、等待事件 | 调度程序使用 |
| 进程控制信息 | 内存信息、打开文件、I/O设备 | 资源管理 |
进程的特征
| 特征 | 说明 | 与程序的对比 |
|---|---|---|
| 动态性 | 进程是程序的一次执行过程,有生命周期 | 程序是静态的代码文件 |
| 并发性 | 多个进程可以在一段时间内同时执行 | 程序本身不能并发 |
| 独立性 | 每个进程有独立的地址空间和资源 | 程序不涉及资源分配 |
| 异步性 | 进程按各自独立的、不可预知的速度推进 | — |
| 结构性 | 进程由 PCB + 程序段 + 数据段组成 | 程序只有代码和数据 |
动态性是最基本的特征
区分进程和程序的根本特征是动态性。进程是「正在执行的程序」,强调的是执行过程而非代码本身。
进程与程序的关系
| 比较维度 | 进程 | 程序 |
|---|---|---|
| 状态 | 动态,有生命周期 | 静态,永久存储 |
| 资源 | 拥有资源(内存、文件等) | 不涉及资源 |
| 数量关系 | 一个程序可对应多个进程 | 一个进程可包含多个程序 |
| 并发 | 可以并发执行 | 不能并发 |
| 创建/撤销 | 可以被创建和撤销 | 无此概念 |
易错
"PCB 是进程存在的唯一标志"不等于"PCB 就是进程"。进程 = PCB + 程序段 + 数据段。PCB 只是操作系统感知和管理进程的依据。选择题常见干扰项:"撤销 PCB 等价于撤销程序"——错,撤销的是进程,程序文件仍然存在于磁盘上。
考研高频考点
- 🔥🔥🔥 PCB 是进程存在的唯一标志
- 🔥🔥🔥 进程的四个特征(尤其动态性是最基本特征)
- 🔥🔥 PCB 中包含的信息分类
- 🔥🔥 进程与程序的区别和联系
- 🔥 进程的组成(PCB + 程序段 + 数据段)
进程有了定义和组成,接下来看它在生命周期中会经历哪些状态,以及状态之间如何转换。