操作系统如何抢占进程并重新获得控制权?

How does operating system preempt a process and regain control?

当进程 运行 在 CPU 上时,操作系统不会 运行 在后台,因为单核 CPU 只能执行 1 条指令一个时间。那么操作系统是如何抢占一个进程的,是硬件来完成的吗? 我在任何地方都找不到答案

要了解 OS 如何重新获得对进程的控制,必须了解 中断 的概念。中断是发送到 CPU 的信号,表示必须停止当前进程(即 interrupted),以便另一个进程可以开始。从某种意义上说,这是在硬件级别完成的,因为 CPU 中有专门的寄存器用于放置中断位。

当中断发生时,存储CPU的寄存器内容,保存当前堆栈指针,然后程序计数器指向[=15]提出的下一条指令=]scheduler 决定接下来开始哪个进程——通常是中断进程。除非死锁,在这种情况下,任何进程都无法取得进展——调度程序将返回到原始进程,并且该进程的执行上下文将重新加载到机器中(因为我们之前已经保存了它)。这种保存机器状态、执行新进程并返回原始进程的概念称为 上下文切换。更多相关信息 here