【操作系统】进程控制块PCB与上下文切换
考点频率:★★★★☆(常以1-2道选择题考查)
难度:⭐
建议:掌握PCB的作用与内容,理解上下文切换的开销与触发条件
1️⃣ 进程控制块 PCB(Process Control Block)
1.1 什么是PCB?
PCB是操作系统为每个进程专门维护的一个数据结构,用于记录进程的各种属性信息。它是进程存在的唯一标志,操作系统通过PCB来感知、管理和控制进程。
类比:PCB 相当于进程的“身份证”。没有PCB的进程,操作系统就“不认识”它,也无法对其进行调度和管理。
一个程序要成为进程,第一步就是操作系统为其创建PCB;进程结束时,操作系统回收PCB。PCB 的生命周期和进程完全同步。
1.2 PCB中存放哪些信息?(重点)
软考常考查PCB的内容分类,需要掌握以下四个维度的信息:
| 维度 | 包含信息 | 说明 |
|---|---|---|
| 进程标识信息 | PID(进程ID)、父进程ID、用户ID | 用于唯一标识进程 |
| 进程调度信息 | 进程状态(就绪/运行/阻塞)、优先级、调度数据 | 用于进程调度决策 |
| 进程控制信息 | 程序计数器(PC)、CPU寄存器值、栈指针 | 用于保存CPU现场,便于上下文切换 |
| 资源管理信息 | 内存分配信息(基址/限长)、打开文件列表、I/O设备状态 | 用于资源回收与共享 |
⚠️注意:PCB中不包含程序源代码或程序代码本身(代码存放在内存的代码段中)。
1.3 PCB的组织方式
系统中有多个进程,PCB也需要被高效管理。常见组织方式有:
- 链接方式:将同一状态(如就绪态)的PCB用链表链接起来,形成就绪队列、阻塞队列等。
- 索引方式:按进程状态建立索引表,每个索引表项指向对应状态的PCB。
软考主要考查链接方式,知道“就绪队列”是PCB的链表即可。
2️⃣ 上下文切换
2.1 什么是上下文切换?
上下文切换是指CPU从当前正在执行的进程切换到另一个进程时,保存当前进程的CPU现场(上下文),并恢复下一个进程的CPU现场的过程。
- 进程上下文= 进程的PCB + CPU寄存器值 + 程序计数器 + 堆栈指针等执行环境信息
2.2 上下文切换的触发时机
| 触发方式 | 具体场景 | 是被动还是主动 |
|---|---|---|
| 中断 | 时钟中断(时间片用完)、I/O中断 | 被动 |
| 系统调用 | 进程主动请求I/O、wait()、sleep()等 | 主动 |
| 异常 | 缺页异常、除零错误等 | 被动(进程自己触发异常) |
2.3 上下文切换的具体步骤(了解流程)
- 保存当前进程的上下文:将当前进程的PC、寄存器值、栈指针等CPU现场信息保存到该进程的PCB中。
- 将当前进程移入相应队列:根据调度决策,将当前进程移到就绪队列或阻塞队列。
- 选择下一个进程:调度程序从就绪队列中选择一个进程,获取其PCB。
- 恢复新进程的上下文:从新进程的PCB中恢复其PC、寄存器值、栈指针等,载入CPU。
- 将CPU控制权交给新进程:新进程开始执行。
2.4 上下文切换的开销(常考)
上下文切换本身是纯开销——它不做任何有用工作,只是保存和恢复数据。上下文切换的时间开销取决于:
- CPU寄存器数量:寄存器越多,保存恢复的数据量越大
- TLB(快表)刷新:切换地址空间时TLB需要刷新或标记失效,导致后续访存变慢
- Cache命中率下降:新进程的数据不在Cache中,初期执行会慢
现代操作系统通过硬件多线程(Hyper-Threading)或增加寄存器组来减少上下文切换的开销。
3️⃣ PCB vs 上下文切换 关系图(文字描述)
进程A运行中 → 中断/系统调用 → 保存A的上下文到PCB_A ↓ 调度程序选B ↓ 恢复PCB_B中的上下文到CPU ↓ 进程B开始运行4️⃣ 经典例题
例题1:进程控制块(PCB)是进程存在的唯一标志。以下信息中,不会出现在PCB中的是( )。
A. 进程ID
B. 进程优先级
C. 程序源代码
D. CPU寄存器值
解析:PCB存储进程标识、调度信息、现场信息和资源管理信息,但程序源代码存储在磁盘或内存的代码区,不在PCB中。选C。
例题2:当进程从运行状态变为就绪状态时,操作系统需要( )。
A. 保存该进程的CPU现场到PCB中
B. 销毁该进程的PCB
C. 从该进程的PCB中恢复CPU现场
D. 将该进程从就绪队列移到阻塞队列
解析:运行→就绪时,进程需要让出CPU,操作系统会保存CPU现场到PCB,然后将该进程放入就绪队列(不会销毁PCB)。选A。
例题3(判断):进程上下文切换时,操作系统需要保存当前进程的CPU寄存器值和程序计数器到其PCB中。( )
解析:正确,保存上下文的具体内容包含寄存器值和PC。选A。
5️⃣ 记忆口诀
PCB是身份证,PID状态优先级。
寄存器PC在中间,没有代码只有址。
上下文切换费时间,保存恢复占资源。
6️⃣ 小测验(评论区对答案)
以下关于进程上下文切换的叙述中,正确的是( )。
A. 上下文切换时,操作系统需要将当前进程的程序代码保存到PCB中
B. 上下文切换的时间开销与CPU寄存器的数量无关
C. 上下文切换时,当前进程的CPU现场信息保存在PCB中
D. 进程上下文切换完成后,新进程的PCB会被销毁
🔔本专栏日更2篇,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容
#软考中级 #软件设计师 #PCB #上下文切换 #进程控制块 #操作系统
