【问题标题】:How process returns control back to task manager in multitask systems?在多任务系统中,进程如何将控制权返回给任务管理器?
【发布时间】:2010-10-19 14:56:28
【问题描述】:

只是一个简单的问题:在单任务系统中,操作系统将 smt 复制到内存,然后“转到”那里的某个地方,然后程序将控制权返回给任务管理器。但在多任务操作系统中,我们只需在进程内执行几个步骤,然后返回任务管理器等待轮到自己。我们如何在没有“goto”和“ret”的情况下“转到任务管理器”?

(想到的唯一一件事 - CPU 出现了一些奇怪的中断,例如 'have made one instruction'

【问题讨论】:

  • 这是通过中断完成的。这是我曾经发布的关于实时操作系统 vxWorks 如何重新获得控制权并安排可能有帮助的新任务的答案:stackoverflow.com/questions/2995210/…
  • 谈到返回,您真的应该试试这个edit 按钮并修正您问题中的许多错别字。
  • @indiv 非常感谢。真的很有趣。
  • @ring0,这样更好吗?它在其他操作系统中的工作方式是否相同?

标签: operating-system multitasking


【解决方案1】:

有两种主要类型的多任务系统。合作和先发制人。

在协作系统中,每个任务都被赋予控制权,然后预计会运行一段时间。然后它必须自愿将控制权交还给调度程序。这可以通过调度函数的运行到完成或通过调用 yield() 函数来实现。有可能通过执行不产生的任务使系统无响应。

在抢占式系统中,调度程序通过强制执行时间片和/或任务优先级来完全控制运行什么任务以及运行多长时间。强制执行本身通常由以某个固定速率生成中断的系统时钟触发。由于此属性,使系统无响应变得更加困难,但仍然可能通过优先级反转或资源死锁来实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多