1

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

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

4

1 回答 1

3

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

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

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

于 2010-10-19T15:29:01.727 回答