OS调度程序如何返回?

时间:2017-01-30 14:17:28

标签: timer process kernel interrupt scheduler

我正在为即将推出的操作系统开发一个简单的内核。我已经开发了所有东西,直到调度程序。我想知道调度程序如何进入它的循环。

例如,

  1. TIMER中断触发。
  2. 处理程序调用调度程序。
  3. 调度程序跳转队列中的下一个进程。
  4. 中断必须返回(IRETD)
  5. 但是如果调度程序必须跳转到下一个进程,那么中断何时返回。如果确实如此,那么它不会回到最后一个过程。

    我想要澄清一下 - 定时器中断如何从调度程序返回,以及调度程序如何与定时器中断通信(如果使用函数调用,则何时返回)?

    假设 - 单片内核

1 个答案:

答案 0 :(得分:0)

发生中断时,处理器会切换其上下文。它通过更新EFLAGS寄存器中的标志并在堆栈上推送一些信息(可以在intel手册中看到)来实现。如果在用户模式下发生中断,则根据当前任务的TSS也会发生堆栈切换。

调度程序进程以 -

完成
  1. 来自堆叠中断状态的用户进程
  2. 选择下一个流程
  3. 关于新进程中断状态的IRETD