上下文切换是否发生在就绪队列只有一个进程且使用循环调度的系统中?
假设单独进程的当前 cpu 突发跨越循环算法的多个时间片。
我的推理如下
在典型情况下发生定时器中断时可能发生的步骤是
- 发生中断。切换到内核模式
- 操作系统将当前上下文保存到 PCB 中(保存当前进程的寄存器、进程状态和内存管理信息)
- 执行许多特定于体系结构的操作,包括刷新数据和指令缓存以及 TLB。
- 将当前进程放入就绪队列
- 选择要执行的新流程
- 从该进程的 PCB 加载上下文
- 切换到用户模式。开始执行新进程
我现在认为操作系统不妨先检查就绪队列并检查是否有其他进程。如果没有,则不需要上下文切换。因此,处理定时器中断将需要在用户模式和内核模式之间切换,检查就绪 Q,并切换回用户模式以恢复进程的执行。
这是怎么回事?或者是否进行了适当的上下文切换,涉及不必要地保存单独进程的当前状态并恢复相同?
如果后者确实发生,是否有特殊原因?
这种混淆是由于试卷中的一个问题涉及计算在这种情况下上下文切换所花费的时间。给出的答案意味着确实发生了上下文切换。
我希望研究过内核代码的人能够对此有所了解。因此这个关于stackoverflow的问题。