Ter*_*nal 16 operating-system scheduling
我最近开始了我的操作系统课程.据我所知,调度程序的工作是保存当前进程的上下文并加载下一个要运行的进程的上下文.但它是如何做到的呢?当进程被抢占时,一旦加载和执行调度程序(因为它也是程序),寄存器中的先前进程的上下文,PSW等将丢失.在加载自身之前如何保存上下文?
Mar*_*nna 19
简单的答案是现代处理器提供架构扩展,提供可以在硬件中交换的几组寄存器,因此X任务可以保留其全套寄存器.
更复杂的答案是,调度程序在被中断触发时,会接收在中断时运行的程序的完整寄存器集(程序计数器除外,可能是通过相互同意的方式传播的).在'易失性'登记册或某些此类).因此,必须仔细编写调度程序以将寄存器库的当前状态存储为触发时的第一操作.简而言之,调度员本身没有直接的背景,因此不会遇到同样的问题.
这是尝试简单描述调度程序调用期间发生的事情:
总结到(过)简化; 调度程序不需要寄存器,它所做的就是将当前的cpu状态写入预定的内存位置,从预定的内存位置加载另一个进程的cpu状态,然后跳转到该进程停止的位置.
这会让它更清楚吗?