协作式多任务处理
本研究旨在对协作式多任务处理中的一些问题进行探讨。
一般信息
编辑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之前的版本的操作系统使用的是非抢占式调度。
非抢占式调度只用于特定的硬件平台,因为它不同于抢占式调度需要特殊的硬件配套,例如计时器。