【问题标题】:How does operating system preempt a process and regain control?操作系统如何抢占进程并重新获得控制权?
【发布时间】:2020-03-13 22:00:19
【问题描述】:

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

【问题讨论】:

    标签: linux architecture linux-kernel operating-system kernel


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,那么,如果我们像调度一样运行循环,会在固定的时间间隔(时间片)出现硬件中断?
    • 对硬件中断的这种解释是……经济的……中断将控制权转移给处理程序。中断处理程序代码不必通过 OS 调度程序退出。
    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 2018-09-19
    • 2022-10-14
    相关资源
    最近更新 更多