第五十六章:上下文切换
复习
- PCB 保存进程的状态和执行现场。
TL;DR
- 上下文切换先保存当前进程现场,再恢复另一个进程现场。
- 它让一个 CPU 看似同时服务多个进程,也有不可省去的成本。
正文
当时间片用完或当前进程阻塞,内核把它的程序计数器、寄存器等现场写入 PCB,再从另一个 PCB 取出保存的值,恢复相应的地址空间,最后返回用户态。这个动作叫上下文切换。
被换出的进程并没有从头开始;下次恢复时,它会从原来停下的那条指令继续。切换本身不直接完成用户工作,还会影响缓存,所以调度不能为切换而切换。
既然 CPU 时间有限,究竟应优先恢复哪个就绪进程?这就是调度问题。
思考题
为什么只保存程序计数器还不足以恢复一个进程?
小结
- 上下文包括寄存器和其他执行相关状态。
- 切换实现多任务,也带来开销。
思考题答案(仅供参考)
后续指令还依赖通用寄存器、栈、地址空间等状态;只恢复位置会让计算使用错误的数据。
协议
本文采用 CC BY-NC-SA 4.0 协议发布。