一、先来先服务
最简单的调度算法是先来先服务(FCFS),也称为先进先出(First-In-First-Out,FIFO)或严格排队方案。当每个进程就绪后,它加入就绪队列。当前正在运行的进程停止执行时,选择在就绪队列中存在时间最长的进程运行。
二、轮转法
这是一种基于时钟的抢占策略,以一个周期性间隔产生时钟中断,当中断发生时,当前正在运行的进程被置于就绪队列中,然后基于FCFS策略选择下一个就绪作业的运行。这种技术也称时间片,因为每个进程在被抢占前都给定一片时间。
三、最短进程优先
最短进程优先(Short Process Next,SPN)策略,这是一个非抢占的策略,其原则是下一次选择预计处理时间最短的进程,因此短进程将会越过长作业,跳到队列头。
四、最短剩余时间
最短剩余时间(Shortest Remaining Time,SRT)是针对SPN增加了抢占机制的版本。在这种情况下,调度程序总是选择预期剩余时间最短的进程。当一个进程加入就绪队列时,它可能比当前运行的进程具有更短的剩余时间,因此只要新进程就绪,调度程序就可能抢占当前正在运行的进程。像SPN一样,调度程序在执行选择函数时必须有关于处理时间的估计,并且存在长进程饥饿的危险。
五、最高响应比优先
根据比率:R=(w+s)/s (R为响应比,w为等待处理的时间,s为预计的服务时间)
如果该进程被立即调用,则R值等于归一化周转时间(周转时间和服务时间的比率)。R最小值为1.0,只有第一个进入系统的进程才能达到该值。
调度规则为:在当前进程完成或被阻塞时,选择R值最大的就绪进程,它说明了进程的年龄。当偏向短作业时,长进程由于得不到服务,等待时间不断增加,从而增加比值,最终在竞争中胜了短进程。
和STR,SPN一样,使用最高响应比(HRRN)策略需要估计预计服务时间。
六、反馈法
如果没有关于各进程相对长度的任何信息,则SPN,SRT和HRRN都不能使用。另一种导致偏向短作业的方法是处罚运行时间较长的作业,换句话说,如果不能获得剩余的执行时间,那就关注已经执行了的时间。
方法为:调度基于抢占原则(按时间片)并且使用动态优先级机制。当一个进程第一次进入系统中时,它被放置在一个优先级队列中,当第一次被抢占后并返回就绪状态时,它被放置在下一个低优先级队列中,在随后的时间里,每当被抢占时,它被降级到下一个低优先级队列中。一个短进程很快会执行完,不会在就绪队列中降很多级,一个长进程会逐渐降级。因此新到的进程和短进程优先于老进程和长进程。在每个队列中,除了在优先级最低的队列中之外,都是用简单的FCFS机制,一旦一个进程处于优先级最低的队列中,它就不可能再降级,但会重复的返回该队列,知道运行结束。因此,该队列可按照轮转方式调度。
各种调度算法的特点
参照操作操作系统精髓与设计原理(第七版)