OS 调度程序如何 return?

How does OS scheduler return?

我正在为即将到来的 OS 开发一个简单的内核。我已经开发了一切,直到调度程序。我想知道调度程序是如何进入其周期的。

例如,

  1. TIMER 中断触发。
  2. 处理程序调用调度程序。
  3. 调度程序跳转到队列中的下一个进程。
  4. 中断必须return (IRETD)

但是如果调度程序必须跳转到下一个进程,那么什么时候中断return。如果是这样,它不会回到上一个过程。

我想要这个说明 - 定时器中断 return 如何从调度程序以及调度程序如何与定时器中断通信(如果使用函数调用,那么什么时候 return)?

假设 - 单片内核

当中断发生时,处理器切换其上下文。它通过更新 EFLAGS 寄存器中的标志并将一些信息压入堆栈来实现(可以在英特尔手册中看到)。如果中断发生在用户态,那么也会根据当前任务的TSS发生堆栈切换。

调度程序进程完成为-

  1. 来自用户进程,中断状态压入堆栈
  2. 选择下一个进程
  3. IRETD 关于新进程的中断状态