调度算法

目录

1、常见的批处理作业调度算法

(1) 先来先服务调度算法(FCFS,First Come First Service)

(2) 短作业优先调度算法(SJF,Shortest Job First)

(3) 最短剩余时间优先算法(SRT,Shortest Remaining Time)

(4) 最高响应比优先算法(HRRN,Highest Response Ratio Next)

(5) 基于优先数调度算法(HPF)

(6) 均衡调度算法(多级队列调度算法)

2、进程调度算法

(1) 先进先出算法(FIFO,First In First Out)

(2) 时间片轮转算法(RR,Round-Robin)

(3) 虚拟轮转法

(4) 最高优先级算法(HPF)

(5) 多级队列反馈法

3、空闲分区分配算法

(1) 首先适应算法

(2) 最佳适应算法

(3) 最坏适应算法

4、虚拟页式存储管理中的页面置换算法

(1) 理想页面置换算法(OPT,Optimal)

(2) 先进先出页面置换算法(FIFO,First In First Out)

(3) 最近最久未使用算法(LRU,Least Recently Used)

(4) 最少使用算法(LFU,Least Frequently Used)

5、磁盘调度

(1) 先来先服务(FCFS,First Come First Service)

(2) 最短寻道时间优先(SSTF,Shortest Seek Time First)

(3) 扫描算法(SCAN)或电梯调度算法

(4) 循环扫描算法(CSCAN,Circular SCAN)


1、常见的批处理作业调度算法

(1) 先来先服务调度算法(FCFS,First Come First Service)

        就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。

(2) 短作业优先调度算法(SJF,Shortest Job First)

        就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值。 缺点是容易导致长作业一直无法运行,产生饥饿现象。

(3) 最短剩余时间优先算法(SRT,Shortest Remaining Time)

        SJF抢占式版本,即当一个新就绪的进程比当前运行进程具有更短完成时间时,系统抢占当前进程,选择新就绪的进程执行。

(4) 最高响应比优先算法(HRRN,Highest Response Ratio Next)

        FCFS可能造成短作业用户不满,SJF可能使得长作业用户不满,于是提出HRN,选择响应比最高的作业运行。响应比(或叫优先权)的算法如下:

        响应比 = (作业等待时间 + 作业处理时间)/ 作业处理时间

        由上式可以看出:

  • 如果作业的等待时间相同,则要求服务的时间愈短,其优先权愈高,因而该算法有利于短作业。

  • 当要求服务的时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,因而它实现的是先来先服务。

  • 对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高,从而也可获得处理机。

        简言之,该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期得不到服务。因此,该算法实现了一种较好的折衷。当然,在利用该算法时,每要进行调度之前,都须先做响应比的计算,这会增加系统开销。

(5) 基于优先数调度算法(HPF)

        每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。

(6) 均衡调度算法(多级队列调度算法)

        基本概念:

  • 作业周转时间(Ti)=完成时间(Tei)-提交时间(Tsi)

  • 作业平均周转时间(T)=周转时间/作业个数

  • 作业带权周转时间(Wi)=周转时间/运行时间

  • 响应比=(等待时间+运行时间)/运行时间

2、进程调度算法

(1) 先进先出算法(FIFO,First In First Out)

        按照进程进入就绪队列的先后次序来选择。即每当进入进程调度,总是把就绪队列的队首进程投入运行。

(2) 时间片轮转算法(RR,Round-Robin)

        分时系统的一种调度算法。轮转的基本思想是,将CPU的处理时间划分成一个个的时间片,就绪队列中的进程轮流运行一个时间片。当时间片结束时,就强迫进程让出CPU,该进程进入就绪队列,等待下一次调度,同时,进程调度又去选择就绪队列中的一个进程,分配给它一个时间片,以投入运行。

(3) 虚拟轮转法

        主要基于时间片轮转法进行改进,解决在CPU调度中对于I/O密集型进程的不友好。其设置了一个辅助队列,对于I/O型进程执行完一个时间片之后,则进入辅助队列,CPU调度时总是先检查辅助队列是否为空,如果不为空总是优先调度辅助队列里的进程,直到为空,才调度就绪队列的进程。辅助队列里并不是存有所有类型的进程,而是只存入I/O型进程。

(4) 最高优先级算法(HPF)

        进程调度每次将处理机分配给具有最高优先级的就绪进程。最高优先级算法可与不同的CPU方式结合形成可抢占式最高优先级算法和不可抢占式最高优先级算法。

(5) 多级队列反馈法

        几种调度算法的结合形式多级队列方式。

        多级反馈队列调度算法不必事先知道各种进程所需的执行时间,而且还可以满足各种类型进程的需要,因而它是目前被公认的一种较好的进程调度算法。在采用多级反馈队列调度算法的系统中,调度算法的实施过程如下所述。

        a、应设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。例如,第二个队列的时间片要比第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍。

        b、当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n 队列便采取按时间片轮转的方式运行。

        c、仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。

3、空闲分区分配算法

(1) 首先适应算法

        当接到内存申请时,查找分区说明表,找到第一个满足申请长度的空闲区,将其分割并分配。此算法简单,可以快速做出分配决定。

(2) 最佳适应算法

        当接到内存申请时,查找分区说明表,找到第一个能满足申请长度的最小空闲区,将其进行分割并分配。此算法最节约空间,因为它尽量不分割到大的空闲区,其缺点是可能会形成很多很小的空闲分区,称为“碎片”。

(3) 最坏适应算法

        当接到内存申请时,查找分区说明表,找到能满足申请要求的最大的空闲区。该算法的优点是避免形成碎片,而缺点是分割了大的空闲区后,在遇到较大的程序申请内存时,无法满足的可能性较大。

4、虚拟页式存储管理中的页面置换算法

(1) 理想页面置换算法(OPT,Optimal)

        这是一种理想的算法,在实际中不可能实现。该算法的思想是:发生缺页时,选择以后永不使用或在最长时间内不再被访问的内存页面予以淘汰。

(2) 先进先出页面置换算法(FIFO,First In First Out)

        选择最先进入内存的页面予以淘汰。

(3) 最近最久未使用算法(LRU,Least Recently Used)

        选择在最近一段时间内最久没有使用过的页,把它淘汰。

(4) 最少使用算法(LFU,Least Frequently Used)

        选择到当前时间为止被访问次数最少的页转换。

5、磁盘调度

(1) 先来先服务(FCFS,First Come First Service)

        是按请求访问者的先后次序启动磁盘驱动器,而不考虑它们要访问的物理位置

(2) 最短寻道时间优先(SSTF,Shortest Seek Time First)

        让离当前磁道最近的请求访问者启动磁盘驱动器,即是让查找时间最短的那个作业先执行,而不考虑请求访问者到来的先后次序,这样就克服了先来先服务调度算法中磁臂移动过大的问题

(3) 扫描算法(SCAN)或电梯调度算法

        总是从磁臂当前位置开始,沿磁臂的移动方向去选择离当前磁臂最近的那个柱面的访问者。如果沿磁臂的方向无请求访问时,就改变磁臂的移动方向。在这种调度方法下磁臂的移动类似于电梯的调度,所以它也称为电梯调度算法。

        高层建筑中电梯请求不断地到来,控制电梯的计算机能够很容易地跟踪顾客按下请求的顺序。如果使用先来先服务算法调度,同时如果电梯负载很重,那么大部分时间电梯将停留在电梯的中部区域,而电梯两端区域的请求将不得不等待,直到负载中的统计波动使得中部区域没有请求位置,这样导致远离中部区域的请求得到的服务很差。因此获得最小响应时间的目标和公平性之间存在着冲突。

        大多数电梯使用电梯算法来协调效率和公平性这两个相互冲突的目标。电梯算法电梯保持按一个方向移动,直到在那个方向上没有请求位置,然后改变方向。

        电梯算法(elevation algorithm)需要软件维护一个二进制位,即当前方向位:向上(up)或向下(down)。当一个请求处理完成之后,电梯的驱动程序检查该位,如果是up,电梯移至下一个更高的未完成的请求。如果更高的位置没有未完成的请求,则方向位取反。当方向位设置为down时,同时存在一个低位置的请求,则移向该位置。

        现在我们明白了,电梯的上下箭头按钮是为了告诉电梯你想向上还是向下去),而不是让电梯向上还是向下。

        举例:电梯在上行,5楼有上召和下召。电梯会停5楼,但它是为上召服务的,所以下召灯还会保持点亮。然后启动向上,直到服务完上行的所有请求。转下行,到五楼时还是会停。这时是服务5楼下召的。

        电梯处理请求规则:电梯有移动方向,各楼层的请求有请求方向,这里维护一个请求表(记录请求ID,请求方向,该请求的停靠楼层)。因为电梯会按照移动方向移动,直到该方向没有请求(请求包括请求ID和停靠楼层的请求),所以不会根据请求方向突然改变电梯的移动方向。因此,电梯在移动过程中只处理与“电梯移动方向”相同的“请求方向”的请求。如电梯向下移动,只处理向下的请求,且该请求的方向也向下(停靠楼层请求无方向)。

(4) 循环扫描算法(CSCAN,Circular SCAN)

        循环扫描调度算法是在扫描算法的基础上改进的。磁臂改为单项移动,由外向里。当前位置开始沿磁臂的移动方向去选择离当前磁臂最近的哪个柱面的访问者。如果沿磁臂的方向无请求访问时,再回到最外,访问柱面号最小的作业请求。

调度算法对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值