调度算法是系统对资源的一种分配策略,它的选择调度策略分为两类:
- 非抢占:这种情况下进程一旦到达运行状态,则不断执行知道终止,或者等待事件转到阻塞状态。
- 抢占:当前运行的进程可能会被系统中断,转换到就绪态。抢占策略可能是一个新进程到达时,或者基于周期性的时间中断。
1.先来先服务,FCFS,最简单的调度策略,按进程的先后顺序调度。当每个进程就绪后,它加入就绪队列,当一个进程终止后,选择队列中存在时间最长的进程运行。FCFS自身对于单处理器系统并不是很有吸引力,但是经常和优先级策略一起使用。
2.时间片轮转法
FCFS并不适用于短作业,因为进程平均周转时间会变长。为了减少短作业情况,可以以一个周期性时间产生始终中断,之后接着执行FCFS策略选择下一个就绪的进程。
3.多级反馈队列
由时间片轮转结合优先级策略综合而来,设置多个就绪队列,每个队列有不同的优先级,当一个进程进入内存后,首先放到第一个队列(优先级最高)末尾,采用FCFS调度,如果在一个时间片内执行完毕就退出,否则将进程中断并放入第二个队列的末尾,以此类推。仅当高优先级队列执行完毕,才去执行低优先级队列。如果一个新的进程优先级比当前执行的进程优先级高,则抢先执行新进程,被抢占的进程回到原队列末尾。
4.最短进程优先
减少FCFS对长进程的偏向的另一种方法,简称SPN,这是一个非抢占策略,下一次选取进程中所需处理时间最短的进程。因此短进程会被先执行。弊端是如果短进程过多,长进程可能会被“饿死”。
5.最短剩余时间
简称SRT,是针对SPN增加了抢占机制。下一次选择中,总是选择剩余时间少的进程,如果此时有一个新进程加入就绪队列,且剩余时间比当前的进程少,则抢占。与SPN有同样的问题,但是比SPN有更好的性能,因为相对于一个正在运行的长作业,短作业可立即被运行。
6.最高响应比优先
简称HRRN,根据响应比来调度,响应比R = (w + s) / s。w表示等待处理器的时间,s表示期待服务时间。当前进程执行完毕或者阻塞,选取R值最大的进程。当偏向于短作业时,长进程得不到服务时间不断增加,从而扩大了比值,从而获取处理器,和SRT,SPN一样,HRRN需要估计进程期望服务时间