【问题标题】:To implement OS for 'preemptive' tasks, what hardware feature should cpu support?为了实现“抢占式”任务的操作系统,cpu 应该支持哪些硬件功能?
【发布时间】:2016-12-31 01:38:48
【问题描述】:

比如实现一个像unix或者NT这样的操作系统,支持根据时间片切换不同的任务,cpu应该有什么样的硬件支持?

英特尔 80286 是否开始支持“抢占式”任务的实施,时钟中断?实现这一目标还需要哪些硬件功能?

谢谢。

【问题讨论】:

  • @rcgldr 继续吹毛求疵 :) 分时用于“进行上下文切换”,分时不是行话(分时 是,虽然)。抢占与高优先级与低优先级无关(这是调度策略的一个特性),抢占与合作相反。最后,取决于你希望你的操作系统有多“强抢占”,它不能在任何处理器上实现:8086 没有阻止任务禁用抢占的机制。
  • @MargaretBloom - 在您发布答案时删除了我之前的评论。我稍后会删除这个。我正在考虑通过为每个任务使用不同的优先级来支持抢占但不支持时间片的一些嵌入式 RTOS。这里不需要区分。

标签: task cpu clock preemptive


【解决方案1】:

要让操作系统有效地实现Preemptive multitasking,硬件必须支持两个功能:

  1. 一种在操作系统将执行交给任务后重新控制操作系统的方法。
    这通常通过定时器中断和系统调用来实现。
    在系统调用时,操作系统重新获得控制权,并且可以暂停当前任务以支持其他任务(特别是对于 IO 受限系统调用)。
    计时器也是需要的,否则不会进行系统调用的大腿旋转任务永远不会将控制权交还给操作系统。

  2. 一种防止禁用上述功能的方法。
    如果正在运行的任务不能被沙盒化到足以保持抢占机制处于活动状态,那么它可以简单地禁用它并永远运行。

286 是 x86 系列中第一个支持 protected mode 的处理器,这是实现功能 2 所必需的模式。
通过使用PIT 8254,从一开始(CPU 为 8086)就可以在 IBM PC 中使用功能 1。

功能 1 是平台硬件的功能,而不是 CPU (though it can be included in the CPU)。
特性 2 是 CPU 的特性。

请注意,还有其他可能的方法来实现 1 和 2。
例如,一个具有两个 CPU 的系统,其中一个可以控制另一个 CPU 的执行(但不能反过来),这两个功能都符合条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多