Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

第五十六章:上下文切换

复习

  • PCB 保存进程的状态和执行现场。

TL;DR

  • 上下文切换先保存当前进程现场,再恢复另一个进程现场。
  • 它让一个 CPU 看似同时服务多个进程,也有不可省去的成本。

正文

  当时间片用完或当前进程阻塞,内核把它的程序计数器、寄存器等现场写入 PCB,再从另一个 PCB 取出保存的值,恢复相应的地址空间,最后返回用户态。这个动作叫上下文切换

  被换出的进程并没有从头开始;下次恢复时,它会从原来停下的那条指令继续。切换本身不直接完成用户工作,还会影响缓存,所以调度不能为切换而切换。

  既然 CPU 时间有限,究竟应优先恢复哪个就绪进程?这就是调度问题。

思考题

为什么只保存程序计数器还不足以恢复一个进程?

小结

  • 上下文包括寄存器和其他执行相关状态。
  • 切换实现多任务,也带来开销。

思考题答案(仅供参考)

  后续指令还依赖通用寄存器、栈、地址空间等状态;只恢复位置会让计算使用错误的数据。

协议

本文采用 CC BY-NC-SA 4.0 协议发布。