协作式多任务处理

来自维基学院

本研究旨在对协作式多任务处理中的一些问题进行探讨。

一般信息[编辑 | 编辑源代码]

CPU调度决定可能发生在以下四种情况下:

1. 当某个进程从执行状态切换到等待状态 (例如,由于I/O请求);

2. 当某个进程从执行状态切换到就绪状态 (例如,发生中断);

3. 当某个进程从等待状态切换到就绪状态 (例如,I/O完成);

4. 当某个进程终止。

第1和4情况下没有可调度的机会。如果某个新的进程必须被选中去执行(即这个进程在就绪状态中),那么就存在调度,即第2和第3中情况下有机会调度。

如果该调度发生在第1和第4中情况下,我们就称该种调度方案为非抢占式调度,或称为协作式调度。第2和第3中情况下,我们称该种调度方案为抢占式调度。而协作式多任务处理就是利用协作式调度来处理多任务的方案。

在非抢占式调度状态下,一旦CPU被分配给某个进程,那么这个进程将一直占用CPU,直到该进程进入终止状态或切换到等待状态时才释放CPU。

非抢占式调度用于Microsoft Windows 3.x. Windows 95以及之后的所有版本的Windows系统都使用抢占式调度。Mac OS X操作系统也使用抢占式调度,但Macintosh之前的版本的操作系统使用的是非抢占式调度。

非抢占式调度只用于特定的硬件平台,因为它不同于抢占式调度需要特殊的硬件配套,例如计时器。