CPU调度决策可在如下四种环境下发生:
1. 当一个进程从运行状态切换到等待状态(例如,I/O请求或调用wait以等待一个子进程的终止)。
2. 当一个进程从运行状态切换到就绪状态(例如,当出现中断时)。
3. 当一个进程从等待状态切换到就绪状态(例如,I/O完成)。
4. 当一个进程终止时。
当调度只能发生在第一和第四种情况时,称调度方案是 非抢占的;否则,调度方案是可抢占的。采用非抢占调度,一旦CPU被分配给一进程,那么该进程会一直使用CPU直到进程终止或切换到等待状态时释放CPU。
分派程序
分派程序是一个模块,用来将CPU的控制交给由短期调度程序选择的进程。其功能包括:
1.切换上下文。
2.切换到用户模式。
3.跳转到用户程序的合适位置以重新启动这个程序。
分派程序应尽可能的快,因为在每次进程切换时都要使用。分派程序停止一个进程而启动另一个进程执行所要花费的时间称为分派延迟。