当前位置: 首页 > news >正文

【操作系统】进程控制块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 上下文切换的具体步骤(了解流程)

  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 #上下文切换 #进程控制块 #操作系统

http://www.jsqmd.com/news/1075180/

相关文章:

  • 大模型微调缺数据?合成数据实战指南
  • FlyOOBE:为老旧硬件开启Windows 11升级新纪元的技术伙伴
  • UVa 599 The Forrest for the Trees
  • Strix Halo 内存带宽测试,大模型推理速度瓶颈分析
  • 1000 tokens/s 到底有多快?我用 8 次 API 请求,测了 4 款国产大模型
  • ICLR 2026 Oral 用 RL 训 Embedder 而非 LLM:Q-RAG 把多步检索成本砍到几乎免费
  • 深度学习进阶(十三)可变形卷积 DCN
  • 卡美德生物科普RSPO1(R-spondin 1):解析组织再生与发育的核心调控机制
  • billd-desk终极指南:如何构建企业级远程桌面控制与游戏串流平台
  • 2026年6月24日(周三)——科创50暴涨3.82%背后的结构性撕裂
  • Visual C++ Redistributable AIO:三分钟解决Windows程序运行问题的完整指南
  • AI 编程时代,UI 设计系统也需要工程化:从 Google DESIGN.md 说起
  • pkg-config介绍
  • Gemma 4 微调 商品分类
  • 吾爱出品,相当炸裂!!
  • 2026零基础录音转文字入门指南避坑教学包教包会看完可直接上手
  • VisualCppRedist AIO:Windows运行库的“瑞士军刀“如何解决你的软件兼容性难题
  • 如何用3分钟解锁15+加密音乐格式:浏览器中的音乐自由革命
  • Java应用启动慢、接口超时、频繁Full GC?别再把锅甩给JVM了!
  • TVA在物流分拣领域的独特价值(8)
  • git项目目录下创建git忽略上传文件
  • 免费开源视频对比工具完全指南:如何像专家一样发现视频差异
  • 从0到1:企业级AI项目迭代日记 Vol.53|功能没做错,边界没接对
  • 【操作系统】进程调度算法(FCFS/SJF/优先级/时间片轮转)
  • 油层物理——2. 储层流体的物化性质
  • Android Studio中文汉化终极指南:5分钟打造母语级开发环境
  • 如何解决小说创作中的组织混乱问题:使用Bibisco的完整解决方案
  • 汽车电子智能分布式控制(IDC)技术:从SiP集成到车门模块的工程实践
  • 博主实测爆火的 Sakana Fugu,发现它还不如一个GPT?
  • 学习者高效阅读赋能知识吸收的方法与实践探究