您的位置:首页 > 其它

处理器调度及其相关算法

2012-12-23 16:22 155 查看

一、基本概念

处理器调度按层次可分为三级:高级调度、中级调度和低级调度。用户作业从进入系统成为后备作业开始,直到运行结束退出系统为止,均经历不同级别的调度。
1、高级调度
高级调度又称为作业调度或宏观调度。其主要功能是根据一定的算法,从输入的一批任务(作业)中选出若干个作业(从磁盘的作业后备队列中选择作业调入内存),分配必要的资源并建立与作业相对应的进程,如内存、外设等,为它建立相应的用户作业进程和为其服务的系统进程(如输入/输出进程),最后把它们的程序和数据调入内存,等待进程调度程序对其执行调度,并在作业完成后作善后处理工作。
2、中级调度
中级调度又称为中程调度,引入中级调度的主要目的是为了提高内存的利用率和系统的吞吐量。内存中不能有太多的进程,把进程从内存移到外存,当内存有足够空间时,再将合适的进程换入内存,等待进程调度。中级调度实际上就是存储器管理中的对调功能。
3、低级调度
低级调度又称为进程调度、短程调度,它决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。在批处理,分时,实时三类系统中,进程调度必须被配置,因而是一种最基本的调度。与中级调度——交换,高级调度——作业调度相对应。
  低级调度的功能:
1、保存处理机的现场信息
2、按某种算法选取进程
3、把处理器分配给进程
在上述三个调度中,低级调度是各类操作系统必备的功能,在纯粹的分时操作系统或实时操作系统中,通常不需要高级调度;一般的操作系统都具有高级调度和低级调度;而功能完善的操作系统,为了提高系统主存的利用率和作业吞吐量,引进中级调度。

二、处理器调度模型
1、三级调度模型



由于引进中级调度,相应的为进程增加“挂起”状态。
2、二级调度模型

3、一级调度模型
纯粹的分时操作系统可以仅采用低级调度。

三、选择调度算法的原则

原则就是如何提高计算机的性能:
1、面向系统的性能:
(1)资源利用率:让cpu和系统资源尽可能的并行工作,使资源利用率尽可能高:
cpu利用率:cpu有效工作时间/cpu总的运行时间
cpu总的运行时间:cpu有效工作时间+cpu空闲等待时间
(2)吞吐率:单位时间cpu处理作业的个数
(3)公平性:确保每一个进程都能合理的获得cpu份额和其他资源份额,不会出现饥饿现象。
2、面向用户性能:
(1)响应时间:从提交一个请求到得到响应之间的时间间隔。
(2)周转时间:批处理用户从向系统提交作业开始,到作业完成为止的时间间隔。
如果作业i提交给系统的时刻是a,完成时刻是b,那么作业i的周转时间为:t=a-b。
平均作业周转时间 :T=(∑Ti)/n
平均带权作业周转时间:W=W=[∑(Ti/Tir)]/n

四、处理器调度算法
在此只讲述低级调度的算法,低级调度有两类基本的调度方式:
1、剥夺式: 剥夺式(preemptive)调度,又称抢先式调度。当进程/线程正在处理器上运行时,系统可根据所规定的原则剥夺分配给此进程/线程的处理器,并将其移入就绪列队,选择其他进程/线程运行。有两种常用的处理器剥夺原则,一是高优先级进程/线程可剥夺低进程/线程;二是当运行进程/线程的时间片用完后背剥夺,在动态改变进程/线程优先级的系统中,经常会出现这样的情况
2、非剥夺式:分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生 进程调度某事件而阻塞时,才把处理机分配给另一个进程。
剥夺式的开销比非剥夺式的开销通常要大,很多操作系统适用两种策略结合使用的方式,内核关键程序是非剥夺式的,用户级别是剥夺式的。
3、算法
1.先来先服务算法(FCFS)
(1)策略:按照作业进入系统的先后次序来挑选作业,先进入系统的作业优先被挑选。 这是一种非剥夺式算法。
(2)效果:算法容易实现,效率不高,只顾及作业等候时间,没考虑作业要求服务时间的长短,不利于短作业而优待了长作业。有利于CPU繁忙型作业而不利于I/O繁忙型作业。 例如,三个作业同时到达系统并立即进入调度:




算法容易实现。但效率不高,只顾及作业等候时间,没考虑作业要求服务时间的长短。因此优待了长作业而不利于短作业。 采用FCFS算法,三个作业的周转时间分别为:28、37和40,因此,平均作业周转时间T = (28+37+40)/3 = 35 若三个作业提交顺序改为作业2、1、3,平均作业周转时间约为29。((9+37+40)/3 29)
若三个作业提交顺序改为作业3、2、1,平均作业周转时间约为18。((3+12+40)/3 18) 下面这个链接是FCFS实现的物理示例:http://syzx.hieu.edu.cn/content/LWR/DEVICE/LLY/FCFSsf.HTM (2).最短作业优先算法SJF(Shortest Job First)
1、策略:最短作业优先算法以进入系统的作业所要求的CPU时间为标准,总选取估计计算时间最短的作业投入运行。这是一种非剥夺式调度算法。
2、性能:算法易于实现,效率不高(相对于剥夺式算法),弱点是需要预先知道作业所需的CPU时间,而这个时间只能靠估计,估计值很难精确,若估计过低,系统可能提前终止该作业;忽视了作业等待时间,会出现饥饿现象;由于缺少剥夺机制,对分时、实时处理很不理想。最短作业优先算法SJF算法的调度时间:每一个作业完成时。
例如,四个作业同时到达系统并立即进入调度:




假设系统中没有其他作业,现实施SJF调度算法, •SJF的作业调度顺序为作业2、4、1、3, 平均作业周转时间 T = (4+12+21+31)/4 = 17 平均带权作业周转时间W=(4/4+12/8+21/9+31/10)/4 = 1.98 •如果对它们施行FCFS调度算法, 平均作业周转时间 T = (9+13+23+31)/4 = 19 平均带权作业周转时间 W = (9/9+13/4+23/10+31/8)/4 = 2.51
SJF的平均作业周转时间比FCFS要小,故它的调度性能比FCFS好。
•缺陷:实现SJF调度算法需要知道作业所需运行时间,否则调度就没有依据,要精确知道一个作业的运行时间是办不到的。 (3)最短剩余时间优先SRTF算法
把SJF算法改为抢占式的调度算法:当一个作业正在执行时,一个新作业进入就绪状态,如果新作业需要的CPU时间比当前正在执行的作业剩余下来还需的CPU时间短,SRTF强行赶走当前正在执行作业,
•此算法不但适用于作业调度,同样也适用于进程调度。 •最短剩余时间优先SRTF算法的调度时间:每一个新作业到来时 一个例子,假如四个就绪作业到达系统和所需CPU时间如下:





Job1从0开始执行,就绪队列仅一个作业。Job2在时间1到达,Job1剩余时间(7毫秒)大于JOB2所需时间(4毫秒),Job1被剥夺,Job2被调度执行。平均等待时间是((10-1)+(1-1)+(17-2)+(5-3))/4=26/4=6.5毫秒。采用非抢占式SJF调度,那么,平均等待时间是7.75毫秒。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: