【发布时间】:2020-03-13 22:00:19
【问题描述】:
当进程在 CPU 上运行时,操作系统不会在后台运行,因为单核 CPU 一次只能执行 1 条指令。那么操作系统是如何抢占一个进程的,是由硬件完成的呢? 我在任何地方都找不到答案
【问题讨论】:
标签: linux architecture linux-kernel operating-system kernel
当进程在 CPU 上运行时,操作系统不会在后台运行,因为单核 CPU 一次只能执行 1 条指令。那么操作系统是如何抢占一个进程的,是由硬件完成的呢? 我在任何地方都找不到答案
【问题讨论】:
标签: linux architecture linux-kernel operating-system kernel
要了解操作系统如何重新获得对进程的控制,必须了解 中断 的概念。中断是发送到 CPU 的信号,表示必须停止当前进程(即 中断),以便另一个进程可以开始。从某种意义上说,这是在硬件层面完成的,因为 CPU 中有专门的寄存器用于放置中断位。
当中断发生时,CPU 寄存器的内容被存储,当前堆栈指针被保存,然后程序计数器指向由 调度器 确定的下一条指令接下来开始的过程 - 通常是中断的过程。除非死锁,在这种情况下,任何进程都无法取得进展——调度程序将返回原始进程,并且该进程的执行上下文将重新加载到机器中(因为我们之前保存了它)。这种保存机器状态、执行新进程并返回原始进程的概念称为上下文切换。更多关于 here
【讨论】: