暂停后还能接着执行
一个任务被暂停时,系统必须保留让它日后继续的状态,例如必要寄存器、程序计数器和栈位置。选择另一个任务后,再恢复它自己的相应状态,处理器才会沿正确指令和数据继续。
《Operating Systems: Three Easy Pieces》的示例用保存和恢复内核栈及寄存器说明这一过程。具体需要保存哪些内容、由硬件还是软件完成,随架构和操作系统实现而不同。
参考:[1]
进入内核还不是换了任务
系统调用、中断或异常可以让内核取得处理权,但内核处理完后也可能返回原任务。只有调度决定改让其他任务执行,才需要在这个意义上切换执行上下文。
定时器中断为抢占提供机会,等待输入输出也可能让当前任务暂时阻塞。调度策略决定接下来运行谁,切换机制负责落实;两者分别回答选择和执行的问题。
开销不限于几个寄存器
保存状态需要时间,切换后的程序还可能重新建立缓存中的工作内容。地址空间变化也需避免误用先前任务的地址转换;架构可用失效或标识机制区分这些状态。
因此时间片并非越短越好。频繁轮换可以改善首次响应,也可能增加切换和重新取热数据的负担;比较性能时,应连同任务负载和响应目标一起观察。