计算机操作系统——进程调度算法

文章目录

一、进程调度的基本知识

1.进程调度的任务

(1)保存处理机的现场信息
在进行调度时首先需要保存当前进程的处理机的现场信息,如程序计数器、多个通用寄存器中的内容等。
(2)按照调度算法选择进程
调度程序按照某种进程调度算法从就绪队列中选取一个进程,将其状态改为运行状态,并准备把处理机分配给它。
(3)把处理器分配给进程
由分派程序把处理器分配给该进程,此时需要将选中进程的进程控制块内有关处理机现场的信息装入处理器相应的各个寄存器中把处理器的控制权交于该进程,让它从上次的断点出回复运行。

2.进程调度的机制

(1)排队器
为了提高进程调度的效率,应事先将系统中的所有就绪进程按照一定的策略排成一个或多个队列,以便调度程序能最快的找到它。以后每当有一个进程转变为就绪状态时,排队器便将它插入到相应的就绪队列中。
(2)分派器
分派器依据进程调度程序所选定的进程,将其从就绪队列中取出,然后进行从分派器到新选出进程间的上下文切换,将处理机分配给新选出的进程。
(3)上下文切换器
处理机进行切换时,会发生两对上下文的切换操作:
①第一对上下文切换时,操作系统将保存当前进程的上下文,即把当前进程的处理机寄存器内容保存到该进程的进程控制块内的相应单元,再装入分派程序的上下文,以便分派程序运行。
②第二对上下文切换是移出分派程序的上下文,而把新选进程的CPU现场信息装入到处理机的各个相应的寄存器中,以便新选进程运行。

3.进程调度方式

(1)非抢占方式
采用非抢占式调度方式时,一个正在运行的程序会一直运行下去,绝不会因为时钟中断或者其他原因去抢占当前正在运行进程的处理机,直至该进程完成,或发生某事件而被阻塞时,才把处理机分配给其他进程。
采用非抢占式调度方式时,可能引起进程调度的因素为:
①正在执行的进程执行完毕,或因发生某事件而使其无法再继续运行。
②正在执行中的进程因提出I/O请求而暂停执行。
③在进程通信或同步过程中,执行了某种原语操作,如Black原语。
对于原语操作,介绍博客点击此处
(2)抢占方式
抢占方式调度方式允许程序根据某个原则去暂停某个正在执行的过程,将已分配给该进程的处理机重新分配给另一进程。
抢占方式调度有很大的优点
①对于批处理机系统,可以防止一个长进程长时间的占用处理机,以确保处理机能为所有进程提供更为公平的服务。
②在分时系统中,只有采用抢占方式才有可能实现人机交互。
③在实时系统中,抢占方式能满足实时任务的需求。
但是也有缺点,就是抢占方式比较复杂,所需付出的系统开销比较大。
抢占方式必须遵循一定的原则
优先权原则。指允许优先权高的新到的进程抢占当前进程的处理机。
短进程优先原则。指允许新到的短进程可以抢占当前长进程的处理机。
时间片原则。指各进程时间片轮转运行时,当正在执行的进程的一个时间片用完后,便停止该进程的执行而重新进行调度。

二、轮转(RR)调度算法

1.基本知识和原理

在分时系统中,最常用的就是基于时间片的轮转调度算法(因为分时系统的目标是均衡性和响应时间快)。让就绪队列上的每一个进程每次仅运行一个时间片。
在轮转算法中,系统根据先来先服务(FCFS)策略,将所有的就绪进程排成一个就绪队列,并可设置每隔一段时间间隔就产生一次中断,激活系统中的进程的调度程序,完成一次调度,将CPU分配给队首进程,令其执行。当该进程的时间片耗尽或者进程执行完毕时,再次将CPU分配给队首进程(或者新到的紧迫进程)。这样就可以保证就绪队列中的所有进程在一个确定的时间段内,都能够获得一次CPU执行。
在时间片轮转调度算法中,做了一个假设,即所有进程的紧迫程度都是相同的。

2.进程切换时机

在轮转调度算法中,进程切换的时机主要有以下两点:
①当一个进程的时间片没有用完,但是正在运行的程序已经完成,就立即激活调度程序,将它从就绪队列中删除,再调度就绪队列中的队首元素,启动一个新的时间片。
②在一个时间片用完时,计时器中断处理程序被激活,如果进程尚未完成,那么调度程序将把它送往就绪队列的末尾。

3.时间片大小的确定

当时间片很小,意味着会频繁的执行进程调度和进程上下文切换,这无疑会增加系统的开销。如果时间片的选择太长,且使得每一个进程都能在时间片内完成,轮转调度(RR)算法便退化为先来先服务(FCFS)算法,无法满足短作业和交互式用户的需求。
一个较为可取的时间片大小是略大于一次典型的交互所需要的时间,使大多数交互进程能在一个时间片内完成,从而可以获得很小的响应时间。

三、优先级调度算法

1.优先级调度算法的类型

优先级调度算法,把处理机优先分配给就绪队列中优先级最高的进程。可以分为以下两类:
(1)非抢占式优先级调度算法
一旦把处理机分配给某个队列中优先级最高的进程后,该进程便一直执行下去直至完成,或者因为该进程发生某事件而放弃处理机时,系统可以将处理机分配给另一个优先级最高的进程。
(2)抢占式优先级调度算法
把处理机分配给优先级最高的进程,如果在执行过程中,出现了另一个更高优先级的进程,调度程序就将处理机分配给新到的优先级最高的进程。抢占式优先级调度算法,常常用在对于实时性(即对截止时间有保证)要求较高的系统中。

2.优先级类型

优先级调度算法的重点在于如何确定进程的优先级,根据优先级的影响因素分为静态优先级和动态优先级。
(1)静态优先级
静态优先级是在创建进程时确定的,在进程的整个运行期间保持不变。优先级是利用某一个范围的整数来表示的。确定优先级大小的依据有以下三个:
进程类型。通常系统进程的优先级高于一般用户进程的优先级。
进程对资源的需求。对资源要求少的进程的优先级高。
用户要求。根据进程的紧迫程度及用户的要求确定进程的优先级。
(2)动态优先级
动态优先级是指在进程创建之初赋予进程一个初始优先级,然后其值随进程的推进或等待时间的增加而改变,以获得更好的调度性能。
如:可以根据进程的等待时长改变其优先级,进程等待时间越久,优先级越高,这样每个进程都会得到处理机处理。再比如可以规定当前进程的优先级随运行的时间的推移而下降,则可防止一个长作业长期的垄断处理机。
其实对于优先级的影响因素的考虑,比较开放。比如可以同时根据进程对资源的要求和等待时间来确定优先级。

四、多队列调度算法

多队列调度算法中,将系统中的进程就绪队列从一个拆分成若干个,将不同类型或性质的进程固定分配在不同的就绪队列中,不同的就绪队列可采用不同的调度算法,一个就绪队列中的进程可以设置不同的优先级,不同的就绪队列本身也可以设置不同的优先级。

五、多级反馈队列调度算法

多级反馈队列调度算法就是多队列调度算法的具体实现之一。

1.调度机制

(1)设置多个就绪队列
在系统中设置多个就绪队列,每个队列都赋予不同的优先级,第一个队列的优先级最高,第二个队列的优先级次之,后面依次每个队列的优先级都逐个降低。
(2)每个队列都采用先来先服务算法(FCFS)
有新进程进入到系统后,首先将它放入到奥第一个就绪队列末尾,按照先来先服务(FCFS)原则等待调度。当轮到该进程执行时,如果它能在时间片内完成,便可以撤离系统,否则,一个时间片过后,调度算法将把它转入到第二个就绪队列末尾等待调度,在第二个就绪队列中运行一个时间片仍然没有完成的话,那么就过了一个时间片放到下一个就绪队列末尾…以此类推,当几次呢很难过被降到最后一个就绪队列,即优先级最低的就绪队列,那么第n队列中便执行轮转调度(RR)算法。
(3)按照队列优先级调度
调度程序首先调度最高优先级队列中的进程运行,仅当优先级最高的队列,即第一就绪队列,为空队列时,才调度第二队列中的进程运行。即仅当上一个就绪队列为空时,才会调度下一个队列中的进程运行。。如果处理机正在处理第i队列中进程时有了新进程进入到任意一个优先级较高的队列,此时必须把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先级进程。

2.调度算法的性能

在多级反馈队列调度算法中,如果规定第一个队列的时间片略大于多数人机交互所需要的处理时间时,便能较好的满足各类用户的需要。
(1)终端型用户。终端型用户提交的作业多属于交互型作业,通常较小,系统只要能使这些作业在第一队列规定的时间片完成,便可以使终端型用户有较好的体验感。
(2)短批处理作业的用户。如果可在第一队列中完成,便可以获得与终端型用户一样的体验感,如果完不成,也只需要在第二队列和第三队列中执行一时间片完成,等待时间仍然较短,体验感较好。
(3)长批处理作业的用户。对于长作业,将依次在1.2.3…n队列中运行,在第n队列中将按照轮转调度算法运行,用户不用担心作业长期得不到处理。

五、基于公平原则的调度算法

以上算法都是优先级越高的作业越先运行,并不保证作业占用了多少处理机时间,没有考虑调度的公平性。

1.保证调度算法

保证调度算法并不是保证进程优先运行,而是保证对进程做到调度的公平性。为公平起见,保证每个进程都获得相同的处理机时间。
对于每个进程而言,体现了公平性,但是,对于用户而言,并没有体现公平性。比如如果各个用户所拥有的进程数不同,就会发生对用户的不公平问题。

2.公平分享调度算法

公平分享调度算法要求考虑每个用户拥有的进程数。比如用户1有进程a1,a2,a3,a4,用户2有一个进程b1。如果保证两个用户能获得相同的处理机时间。那么进程调度序列类似如下这种:
a1,b1,a2,b1,a3,b1,a4,b1,a1,b1…
如果保证用户1能获得处理机时间是用户2的两倍。那么进程调度序列类似如下这种:
a1,a2,b1,a3,a4,b1,a1,a2,b1…

    原文作者:孟小胖_H
    原文地址: https://blog.csdn.net/yi_chengyu/article/details/121875362
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞