操作系统 进程管理之处理机调度

一、调度的概念

1.1 调度的基本概念

处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。

1.2 调度的层次

1、作业调度(高级调度)
主要任务是按一定的原则从外存上处于后备状态的作业中挑选一个(或多个)作业,给它们分配内存、输入/输出设备等必要的资源,并建立相应的进程,以使它们获得竞争处理机的权利。简而言之,就是内存与辅存之间的调度。对于每个作业只调入一次、调出一次。
2、中级调度(内存调度)
引入中级调度是为了提高内存利用率和系统吞吐量。为此,应使那些暂时不能运行的进程,调至外存等待,把此时的进程状态称为挂起状态。当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。
3、进程调度(低级调度)
主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。进程调度室操作系统中最基本的一种调度,在一般操作系统中都必须配置进程调度。

1.3 三级调度的联系

作业调度从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被送入就绪队列;
进程调度从就绪队列中选出一个进程,并把其状态改为运行状态,把CPU分配给它;
中级调度室为了提高内存的利用率,系统将那些暂时不能运行的进程挂起来,当内存空间宽松时,通过中级调度选择具备运行条件的进程,将其唤醒。
(1)作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间。
(2)作业调度次数少,中级调度次数略多,进程调度频率最高。
(3)进程调度室最基本的,不可或缺。

1.4 进程调度方式

进程调度方式是指当某一个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要处理,即有优先权更高的进程进入就绪队列,此时应如何分配处理机。
1、非剥夺调度方式(非抢占方式)
当一个进程正在处理机上执行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,直到该进程完成或发生某种事件而进入阻塞状态时,才将处理机分配给更为重要或紧迫的进程。
在非剥夺调度方式下,一旦把CPU分配给一个进程,那么该进程就会保持CPU直到终止或转换到等待状态。
优点:实现简单、系统开销小,适用于大多数批处理系统,但它不能用于分时系统和大多数的实时系统。
2、剥夺调度方式(抢占方式)
当一个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给这个更为重要或紧迫的进程。
采用剥夺式的调度,对提高系统吞吐率和响应效率都有明显的好处。但“剥夺”不是一种任意性行为i,必须遵守一定的原则,主要有:优先权、短进程优先和时间片原则等。

1.5 调度的基本准则

1、CPU利用率
CPU是计算机系统中最重要和昂贵的资源之一,所以应尽可能使CPU保持“忙”状态,使这一资源利用率最高。
2、系统吞吐量
表示单位时间内CPU完成作业的数量。长作业需要消耗较长的处理机时间,因此会降低系统的吞吐量。而对于短作业,它们所需要消耗的处理机时间较短,因此能提高系统的吞吐量。
3、周转时间
指从作业提交到作业完成所经历的时间,包括作业等待、在就绪队列中排队、在处理机上运行以及进行输入/输出操作所花费时间的总和。
作业的周转时间公式表示:
周转时间=作业完成时间-作业提交时间
平均周转时间是指多个作业周转时间的平均值:
平均周转时间=(作业1的周转时间+作业2的周转时间+…+作业n的周转时间)/n
带权周转时间是指作业周转时间与作业实际运行时间的比值:
带权周转时间=作业周转时间/作业实际运行时间
平均带权周转时间是指多个作业带权周转时间的平均值:
平均带权周转时间=(作业1的带权周转时间+…+作业n的带权周转时间)/n
4、等待时间
指进程处于等处理机状态时间之和,等待时间越长,用户满意度越低。
处理机调度算法实际上不影响作业执行或输入/输出操作的时间,只影响作业在就绪队列中等待所花的时间
5、响应时间
指从用户提交请求道系统首次产生响应所用的时间。

二、典型调度算法

2.1 先来先服务(FCFS)调度算法

FCFS调度算法是一种最简单的调度算法,该调度算法既可以用于作业调度也可以用于进程调度。
在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
在进程调度中,算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到完成或因某种原因而阻塞时才释放处理机。

FCFS调度算法属于不可剥夺算法
FCFS调度算法的特点是算法简单,但效率低;对长作业比较有利,但对短作业不利(相对SJF和高响应比);有利于CPU繁忙型作业,而不利于I/O繁忙型作业。

2.2 短作业优先(SJF)调度算法

短作业(进程)优先调度算法是指对短作业(进程)优先调度的算法。
短作业优先(SJF)调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。
短进程优先(SPF)调度算法是从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行,直到完成或发生某事件而阻塞时,才释放处理机。

SJF调度算法的缺点:
(1)对长作业不利,长作业的周转时间会增加,更严重的是,如果一长作业进入系统的后备队列,由于调度程序总是优先调度那些短作业,将导致长作业长期不被调度(饥饿现象)。
(2)完全未考虑作业的紧迫程度,因而不能保证紧迫性作业会被及时处理。
(3)由于作业的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意无意地所缩短其作业的估计时间,致使算法不一定能真正做到短作业优先调度。

SJF调度算法的平均等待时间、平均周转时间最少

2.3 优先级调度算法

优先级调度算法又称优先权调度算法,该算法既可以用于作业调度,也可以用于进程调度,该算法中的优先级用于描述作业运行的紧迫程度。
在作业调度中,优先级调度算法每次从后备作业队列中,选择优先级最高的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。

根据新的更高优先级进程能否抢占正在执行的进程,可将该调度算法分为:
(1)非剥夺式优先级调度算法
当某个进程正在处理机上运行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到由于自身的原因而主动让出处理机时(任务完成或等待事件),才把处理机分配给更为重要或紧迫的进程。
(2)剥夺式优先级调度算法
当一个进程正在处理机上运行时,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给更重要或紧迫的进程。

根据进程创建后其优先级是否可以改变,可以将进程优先级分为以下两种:
(1)静态优先级
优先级是在创建进程时确定的,且在进程的整个运行期间保持不变。确定静态优先级的主要依据有进程类型、进程对资源的要求、用户要求。
(2)动态优先级
在进程运行过程中,根据进程情况的变化动态调整优先级。动态调整优先级的主要依据为进程占有CPU时间的长短、就绪进程等待CPU时间的长短。

2.4 高响应比优先级调度算法

高响应比优先级调度算法主要用于作业调度,该算法是对FCFS调度算法和SJF调度算法的一种综合平衡,同时考虑每个作业的等待时间和估计得运行时间。在每次进行作业调度时,先计算后备作业队列中每个作业的响应比,从中选出响应比最高的作业投入运行。
响应比的变化规律可描述为
响应比 Rp =(等待时间+要求服务时间)/要求服务时间
根据上式可知:
(1)当作业的等待时间相同时,则要求服务时间越短,其响应比越高,有利于短作业。
(2)当要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,因而它实现的是先来先服务。
(3)对于长作业,作业的响应比可以随等待时间的增加而提高,当其等待时间足够长时,其响应比便可升到很高,从而也可获得处理机。克服了饥饿状态,兼顾了长作业。

2.5 时间片转轮调度算法

时间片转轮调度算法主要适用于分时系统。在这种算法中,系统将所有就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中第一个进程执行,即先来先服务的原则,但仅能运行一个时间片。在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪的进程,而被剥夺的进程返回到就绪队列的末尾重新排列,等候再次运行。

时间片转轮调度算法中,时间片的大小对系统性能的影响很大。如果时间片足够大,以至于所有进程都能在一个时间片内执行完毕,则时间片转轮调度算法就退化为先来先服务调度算法。如果时间片很小,那么处理机将在进程间过于频繁切换,使处理机的开销增大,而真正用于运行用户进程的时间将减少。

时间片的长短通常由以下因素确定:系统的响应时、就绪队列中的进程数目和系统的处理能力。

2.6 多级反馈队列调度算法

多级反馈队列调度算法是时间片转轮调度算法和优先级调度算法的综合和发展。通过动态调整进程优先级和时间片大小,多级反馈队列调度算法可以兼顾多方面的系统目标。

多级反馈队列调度算法的实现思想如下:
(1)应设置多个就绪队列,并为各个队列赋予不同的优先级,第1级队列的优先级最高,第2级队列的优先级次之,其余队列的优先级逐次降低。
(2)赋予各队列中进程执行时间片的大小也各不相同,在优先级越高的队列中,每个进程的运行时间就越小。
(3)当一个新的进程进入内存后,首先将它放入第1级队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,边可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第2级队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第2级队列运行一个时间片仍未完成,再以同样的方法放入第3级队列……如此下去,当一个长进程从第1级队列依次降到第n级队列后,在第n级队列中便采用时间片转轮的方式运行。
(4)仅当第1级队列为空时,调度程序才调度第2级队列的进程运行;仅当第1~i-1级队列均为空时,才会调度第i级队列中的进程运行。如果处理机正在执行第i级队列中的某进程时,又有新进程进入优先级较高的队列,则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i级队列的末尾,把处理机分配给新到的更高优先级的进程。

多级反馈队列的优势:
(1)终端型作业用户:短作业优先
(2)短批处理作业用户:周转时间较短
(3)长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值