【操作系统】进程控制块PCB与上下文切换
2026/6/25 13:43:58 网站建设 项目流程

考点频率:★★★★☆(常以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 上下文切换的具体步骤(了解流程)

  1. 保存当前进程的上下文:将当前进程的PC、寄存器值、栈指针等CPU现场信息保存到该进程的PCB中。
  2. 将当前进程移入相应队列:根据调度决策,将当前进程移到就绪队列或阻塞队列。
  3. 选择下一个进程:调度程序从就绪队列中选择一个进程,获取其PCB。
  4. 恢复新进程的上下文:从新进程的PCB中恢复其PC、寄存器值、栈指针等,载入CPU。
  5. 将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 #上下文切换 #进程控制块 #操作系统

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询