一、调度的基本概念
1.处理机调度是对处理机进行分配,即从就绪队列中按照一定的算法选择一个进程并将处理机分配
给它运行,以实现进程并发地执行。处理机调度是多道程序操作系统的基础,是操作系统设计的核心
问题。
2.一个作业从犯提交开始,往往要经历以下三级调度
(1)作业调度。又称高级调度,其主要任务是按一定的原则从外存上处于后备状态的作业中挑选一
个或多个作业,给它们分配内存、输入/输出设备等必要的资源,并建立相应的进程,以使它们获得
竞争处理机的权力
(2)中级调度。又称内存调度,其作用是提高内存利用率和系统吞吐量。为此,应将那些暂时不能
运行的进程调至外存等待,把此时的进程状态称为挂起态。当它们已具备运行条件且内存又稍有
空闲时,由中级调度来决定把外存上的那些已具备运行条件的就绪进程,再重新调入内存,并修改
其状态为就绪态,挂在就绪队列上等待
(3)进程调度。又称低级调度,其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将
锤击分配给它。
3.三级调度的联系
作业调度从外存的从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被
送入就绪队列,进程调度就从就绪队列中选出一个进程,并把其状态改为运行态,把CPU分配给它。
中级调度是为了提高内存的利用率,系统将那些暂时不能运行的进程挂起来。当内存空间宽松时,通
过中级调度选择具备运行条件的进程,将其唤醒。
(1)作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的
进程挂起,中级调度处于作业调度和进程调度之间。
(2)作业调度次数少,中级调度次数略多,进程调度频率最高。
(3)进程调度是最基本的,不可或缺。
二、调度的时机、切换与过程
应该进行进程调度与切换的情况如下:
(1)发生引起调度条件且当前进程无法继续运行下去时,可以马上进行调度与切换。若操作系
统只在这种情况下进行调度,则是非剥夺调度。
(2)中断处理结束或自陷处理结束后,返回被中断进程的用户态程序执行现场前,若置上请求
调度标志,即可马上进行进程调度与切换。若操作系统支持这种情况下的运行调度程序,则实
现了剥夺方式的调度。
进程切换往往在调度完成后立刻发生,它要求保存原进程当前切换点的现场信息,恢复被调度
进行的现场信息。现场切换时,操作系统内核将原进程的现场信息推入当前进程的内核堆栈来保存
它们,并更新堆栈指针。内核完成从新进程的内核中装入新进程的现场信息、更新当前运行进程空
间指针、重设PC寄存器等相关工作之后,开始运行新的进程。
三、进程调度方式
所谓进程调度方式是指当某个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要
处理,即有优先权更高的进程进入就绪队列进入就绪队列,此时应如何分配处理机。
(1)非剥夺调度方式,又称非抢占方式。在非剥夺调度方式下,一旦把CPU分配给一个进程,该进
程就会保持CPU直到终止或转换到等待态。这种方式的优点是实现简单、系统开销小,适用于大多
数的批处理系统,但它不能适用于分时系统和大多数的实时系统。
(2)剥夺调度方式,又称抢占方式。采用剥夺式的调度,对提高系统吞吐量和影响效率都有明显
的好处。但但剥夺不是一种任意性行为,必须遵循一定的原则,主要有优先权、短进程优先和时间片
原则等。
四、调度的基本准则
1.CPU利用率。尽可能使CPU利用率高
2.系统吞吐量。表示单位时间内CPU完成作业的数量。长作业需要消耗教程的处理机时间,因此会
降低系统的吞吐量。而对于短作业,他们所需要消耗的处理机时间较短,因此能提高系统的吞吐量。
3.周转时间。周转时间是指从作业提交到作业完成所需要
五、典型的调度算法
1.先来先服务(FCFS)调度算法
FCFS算法既可以用于作业调度,也可以用于进程调度。在作业调度中,算法每次从后备作业队
列中选择最先进入该队列的一个或几个作业,将它们调入内存分配必要的资源.创建进程并放入就绪
队列。
FCFS调度算法属于不可剥夺算法。特点是算法简单,但效率低;堆场作业比较有利,但对短作业
不利;有利于CPU繁忙型作业,不利于I/O繁忙型作业。
2.短作业优先(SJF)算法
SJF存在的缺点:
(1)该算法对长作业不利(容易使长作业处于饥饿状态)
(2)该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业会被及时处理
(3)由于作业的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意无意地
缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度。
3.优先级调度算法
优先级调度算法它既可以用于作业调度,又可用于进程调度。该算法中的优先级用于描述作业
运行的紧迫程度。
在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最高的一个或几个作业,将
它们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法每次从
就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。
根据新的更高优先级进程能否抢占正在执行的进程,可以将调度算法分为如下两种:
(1)非剥夺式优先级调度算法。当一个进程正在处理机上运行时,即使有某个更为重要或紧迫
的进程进入就绪队列,仍然让正在运行的进程继续运行,直到由于其自身的原因而主动让出处理机时
才把处理机分配给更为重要或紧迫的进程。
(2)剥夺式优先级调度算法。与上面恰好相反。
而根据进程创建后期优先级是否可以改变,可以将进程的优先级分为以下两种:
(1)静态优先级。优先级在创建进程时确定的,且在进程的整个运行期间保持不变。确定静态
优先级的主要依据有进程类型、进程对资源的要求、用户要求。
(2)动态优先级。在进程运行过程中,根据进程情况的变化动态调整优先级。动态调整优先级
的主要依据有进程占有CPU时间的长短、就绪进程等待CPU时间的长短。
一般来说:进程优先级的设置可以参照一下原则:
(1)系统进程>用户进程。
(2)交互型进程>非交互型进程。
(3)I/O型进程>计算型进程。
4.高响应比优先调度算法
高响应比优先调度算法主要用于作业调度,是对FCSF调度算法和SJF调度算法的一种综合平衡,
同时考虑了每个作业的等待时间和估计的运行时间。在每次进行作业调度时,先计算后备作业队列
中每个作业的响应比,从中选择响应比最高的作业投入运行。
响应比的变化规律可描述为:响应比Rp=(等待时间+要求服务时间)/要求服务时间。
根据公式可知:
(1)作业的等待时间相同时,要求服务时间越短,响应比越高,有利于短作业。
(2)要求服务时间相同时,等待时间越长,其响应比越高,因而它实现的是先来先服务。
(3)对于长作业,等待时间足够长时,其响应比便可升到很高,克服了饥饿状态。
5.时间片轮转调度算法
时间片轮转调度算法主要适用于分时系统。在这种算法中,系统将所有就绪进程按到达时间的
先后次序排成一个队列,进程调度程序总是选择就绪队列中的第一个进程执行,即先来先服务的原
则,但仅能运行一个时间片。在使用完一个时间片后,即使进程并未完成其运行它也必须释放出处理
机给下一个就绪的进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等待再次运行。
时间片的长短通常由以下因素确定:系统的响应时间、就绪队列中的进程数目和系统的处理能
力。
6.多级反馈队列调度算法
通过动态调整进程优先级和时间片大小,多级反馈队列调度算法可以兼顾多方面的系统目标。
多级反馈队列调度算法的实现思想如下:
(1)设置多个就绪队列,并未各个队列赋予不同的优先级,第1级队列的优先级最高,第2级队列
次之,其余队列的优先级逐次降低
(2)赋予各个队列中进程执行时间片的大小各不相同。在优先级高的队列中,每个进程运行的
时间片越小。
(3)一个新进程进入内存后,首先将它放入第1级队列的末尾,按FCFS原则排队等待调度。当轮
到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;若它在一个时间片结束时尚未完
成,调度程序便将该进程调入第2级队列的末尾,再同样按FCFS原则等待调度执行。以此类推,当一
个长进程从第1级队列依次降到第n级队列后,在第n级队列中便采用时间片轮转的方式运行。
(4)仅当第1~(i-1)级队列均为空时,才会调度第i级队列中的进程运行。若处理机正在执行第
i级队列中的某进程,这时又有新进程进入优先级较高的队列,则此时新进程将抢占正在运行进程的
处理机。
多级反馈队列的优势有以下几点:
(1)终端型作业用户:短作业优先
(2)短批处理作业用户:周转时间较短
(3)长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理。
2.2 处理机调度
最新推荐文章于 2022-04-29 20:51:19 发布