我很难理解preemption(抢占)的一件事情。引用维基百科:
在计算机中,preemption(更正确的是pre-emption)是指暂时中断计算机系统正在执行的任务,而不需要其合作,并且有意在以后恢复该任务。这种变化被称为上下文切换。它通常由特权任务或系统的一部分(称为抢占式调度程序)执行,该调度程序具有抢占或中断其他系统中的任务并稍后恢复的能力。
所以,基本上他们说调度程序可以打断当前运行的任务。这怎么可能? CPU此时正在运行此任务的代码,而不是调度程序的代码。那么调度程序如何去做任何事呢?
我猜肯定存在某种硬件计时器,当时间到达一定时限时,物理上中断CPU并将控制返回给调度程序。这个猜测正确吗?是否有任何文档可以让我更详细地了解它?
非常感谢您的回答。
在计算机中,preemption(更正确的是pre-emption)是指暂时中断计算机系统正在执行的任务,而不需要其合作,并且有意在以后恢复该任务。这种变化被称为上下文切换。它通常由特权任务或系统的一部分(称为抢占式调度程序)执行,该调度程序具有抢占或中断其他系统中的任务并稍后恢复的能力。
所以,基本上他们说调度程序可以打断当前运行的任务。这怎么可能? CPU此时正在运行此任务的代码,而不是调度程序的代码。那么调度程序如何去做任何事呢?
我猜肯定存在某种硬件计时器,当时间到达一定时限时,物理上中断CPU并将控制返回给调度程序。这个猜测正确吗?是否有任何文档可以让我更详细地了解它?
非常感谢您的回答。