OS 调度程序如何 return?
How does OS scheduler return?
我正在为即将到来的 OS 开发一个简单的内核。我已经开发了一切,直到调度程序。我想知道调度程序是如何进入其周期的。
例如,
- TIMER 中断触发。
- 处理程序调用调度程序。
- 调度程序跳转到队列中的下一个进程。
- 中断必须return (IRETD)
但是如果调度程序必须跳转到下一个进程,那么什么时候中断return。如果是这样,它不会回到上一个过程。
我想要这个说明 - 定时器中断 return 如何从调度程序以及调度程序如何与定时器中断通信(如果使用函数调用,那么什么时候 return)?
假设 - 单片内核
当中断发生时,处理器切换其上下文。它通过更新 EFLAGS 寄存器中的标志并将一些信息压入堆栈来实现(可以在英特尔手册中看到)。如果中断发生在用户态,那么也会根据当前任务的TSS发生堆栈切换。
调度程序进程完成为-
- 来自用户进程,中断状态压入堆栈
- 选择下一个进程
- IRETD 关于新进程的中断状态
我正在为即将到来的 OS 开发一个简单的内核。我已经开发了一切,直到调度程序。我想知道调度程序是如何进入其周期的。
例如,
- TIMER 中断触发。
- 处理程序调用调度程序。
- 调度程序跳转到队列中的下一个进程。
- 中断必须return (IRETD)
但是如果调度程序必须跳转到下一个进程,那么什么时候中断return。如果是这样,它不会回到上一个过程。
我想要这个说明 - 定时器中断 return 如何从调度程序以及调度程序如何与定时器中断通信(如果使用函数调用,那么什么时候 return)?
假设 - 单片内核
当中断发生时,处理器切换其上下文。它通过更新 EFLAGS 寄存器中的标志并将一些信息压入堆栈来实现(可以在英特尔手册中看到)。如果中断发生在用户态,那么也会根据当前任务的TSS发生堆栈切换。
调度程序进程完成为-
- 来自用户进程,中断状态压入堆栈
- 选择下一个进程
- IRETD 关于新进程的中断状态