许多操作系统引用说,与合作组织(相对于先占)多任务,这一过程保持CPU直到它明确自愿暂停本身。如果一个运行过程中执行的I/O请求,不能立即满足(例如,要求一个关键的行程也就是尚未提供),并调度程序中止,或者它是否真的让CPU直到的请求可以提供清洁服务?

[编辑来取代"地块上的i/o"与"执行I/O请求,不能立即满足。"]

有帮助吗?

解决方案

在一个真正的"合作社"设定,并且如果没有硬件的保护,这一过程可以肯定的框I/O并未放弃控制,直至I/O完成(或者从来没有放弃控制在所有)。例如,Windows3.1是这样的:如果一个单个用户的过程,想在整个计算机,并防止任何其他运行,这可能。

但是在一个系统与多任务你期待的系统API I/O命令放弃处理器的控制的时候,他们被称为。因此,当一个正在运行过程块I/O,假定该过程使用该系统正常Api,其他进程将允许运行,直到第I/O完成,并最终原始的进程将会恢复,一旦I/O完成。换句话说,呼吁阻止I/O功能的一种方式是进程上的合作系统可以自愿暂停本身。

其他提示

如果一个运行过程块i/o

Blocking IO上差不多相当于暂停进过程。在linux内核,执行一些系统IO例如呼叫 read() 会造成 sysenter 或者中断的处理程序的触发看起来之后,IO,叫 do_sys_read() 最终的。在这里,如果目前的请求不能立即得到满足,该功能的电话 sched() 然后可以执行的另一个进程。

在该背景下的一个合作系统时,我希望当你让一个系统的呼吁,一些IO原因,如果请求不能被满足的核心挑选另一个的任务和执行。 这份文件 提供一些背景基本上,如果你一直在等待IO,你可以挂永远在等待那IO.这个想法的合作调度正在你经常通话 sched() 或equvalent放弃的cpu方法,如果这样做CPU密集型任务。

核模式考虑因素获得更多有趣的。关于结构,他们都是可用的,例如 某些嵌入式平台, 中断的处理程序将仍然是援引在应对硬件或软件的中断。它通常是可能的,执行明智的, 禁用 中断处理, 但也有缺点。

在合作调度(最好 cooperative multitasking)模型,没有任何概念的一个计划程序在某种意义上这一操作系统没有任何控制多久的进程的运行。

应用程序正确地编程自愿放弃CPU I/O.但是,严重的书面申请可能只是保持在等待I/O,从而阻止其他进程。

PS:这种方法后来被给予了大多数的操作系统在有利于抢先调度(其中有一个外部调度),现在我们有各种不同的调度的算法用于不同的操作系统。

编辑: 我的答案是基于调度描述为在其原始形式(年前:P)。作为吉尔谈一些系统仍然使用协作的调度。有一个计划程序。我不知道如果这些系统的使用,因为在其纯粹的和原来的形式。

Co-operative多任务意味着执行方面必须明确放弃控制的调度程序,并且如果愿意,可以防止一方面开关发生。

大多数实现的明确执行方面开关于任何系统的呼吁,不返回的迅速,甚至常常如果他们这样做,以增加公平的处理分配。

通常它只是可能失败的进程(或故意拒绝服务系统的剩余部分),以预防频繁的任务的切换。

Pre-emption,作为解释吉尔,是一个限制架构的系统,防止超时中断的活动的任务和强迫背景下开关。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top