当操作系统准备运行自己的“让我们来编排这个世界”代码时,它就会这样做。
例如,在某些点上,OS线程调度器具有控制权。在允许线程运行之前,它准备好处理器、寄存器和其他所有需要做的事情,以便为该进程和线程设置环境。然后,在让该线程运行之前,它会设置一个计时器中断,该中断将在它打算让该线程占用CPU的时间过去之后引发。
在该时间段(量程)过去之后,将引发中断,并且OS调度程序再次接管控制权。它必须弄清楚下一步需要做什么。要做到这一点,它需要保存CPU寄存器的状态,以便它知道如何撤销它执行的代码的副作用。如果在保存状态时由于任何原因(例如,某些异步I/O完成)而引发另一个中断,这将使操作系统处于其世界不处于有效状态的情况(实际上,保存状态需要是原子操作)。
因此,为了避免陷入这种情况,操作系统内核会在执行任何此类需要原子化的操作时禁用中断。在它完成所有需要做的事情并且系统再次处于已知状态之后,它会重新启用中断。