【问题标题】:How can preemptive multitasking work, when OS is just one of the processes?当操作系统只是进程之一时,抢占式多任务如何工作?
【发布时间】:2011-11-11 19:24:02
【问题描述】:

我现在正在阅读有关抢先式多任务处理的材料 - 有一件事让我无法理解。

所有资料都暗示,操作系统以某种方式从“外部”中断了CPU上正在运行的进程,从而导致上下文切换等。

但是,当操作系统的内核只是 CPU 上的另一个进程时,我无法想象它会如何工作。当另一个进程已经在占用 CPU 时,操作系统如何导致从“外部”切换?

【问题讨论】:

    标签: operating-system multitasking


    【解决方案1】:

    硬件可以向处理器发出信号——这被称为“中断”——当它发生时,控制权就会转移到内核(无论当时正在执行哪个进程)。此功能内置于处理器中。具体来说,控制权被转移到一个“中断处理程序”,它是内核中的一个函数/方法。例如,内核可以调度一个定时器中断,以便定期发生这种情况。一旦发生中断并将控制权转移给内核,内核就可以将控制权交还给最初执行的进程,或者另一个被调度的进程。

    【讨论】:

    • 哦!我知道中断是什么,我只是认为它只发生在硬件访问等情况下。所以...如果我是对的,内核会释放一个定时器中断,它周期性地在一开始就将其自身作为一个中断处理程序并在那里进行上下文切换>。聪明的! :)
    • (我给 David Schwartz 添加了最佳答案,因为他得到的分数更少,我无法选择 2 个最佳答案 :))
    【解决方案2】:

    操作系统不仅仅是另一个进程。当中断发生时,操作系统控制系统的行为。

    在调度程序启动进程之前,它会安排在时间片结束时发送定时器中断。假设在此之前没有发生任何其他事情,计时器将触发,内核将接管控制权。如果它选择调度一个不同的进程,它会切换一些东西让另一个进程运行,然后从中断中返回。

    【讨论】:

    • 啊哈,我想我开始明白了。我不知道可以排除定时器中断,我认为中断只发生在硬件访问中,这就是我逃脱的原因。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2012-08-10
    • 1970-01-01
    • 2016-01-01
    • 2019-01-23
    相关资源
    最近更新 更多