暂停后还能接着执行

一个任务被暂停时,系统必须保留让它日后继续的状态,例如必要寄存器、程序计数器和栈位置。选择另一个任务后,再恢复它自己的相应状态,处理器才会沿正确指令和数据继续。

《Operating Systems: Three Easy Pieces》的示例用保存和恢复内核栈及寄存器说明这一过程。具体需要保存哪些内容、由硬件还是软件完成,随架构和操作系统实现而不同。

参考:[1]

进入内核还不是换了任务

系统调用、中断或异常可以让内核取得处理权,但内核处理完后也可能返回原任务。只有调度决定改让其他任务执行,才需要在这个意义上切换执行上下文。

定时器中断为抢占提供机会,等待输入输出也可能让当前任务暂时阻塞。调度策略决定接下来运行谁,切换机制负责落实;两者分别回答选择和执行的问题。

参考:[1] [2]

开销不限于几个寄存器

保存状态需要时间,切换后的程序还可能重新建立缓存中的工作内容。地址空间变化也需避免误用先前任务的地址转换;架构可用失效或标识机制区分这些状态。

因此时间片并非越短越好。频繁轮换可以改善首次响应,也可能增加切换和重新取热数据的负担;比较性能时,应连同任务负载和响应目标一起观察。

参考:[3] [4]