操作系统理论 第三章(处理机调度与死锁)—第三节(进程调度)

写在前面:

  1. 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_bilibili

一、进程调度的发生时机

1、需要进行进程调度与切换的情况

(1)当前运行的进程主动放弃处理机:

①进程正常终止。

②运行过程中发生异常而终止。

③进程主动请求阻塞(如等待I/O)。

(2)当前运行的进程被动放弃处理机:

①分给进程的时间片用完(针对使用时间片概念的调度算法)。

②处理机有更紧急的事情需要处理(比如I/O中断)。

③有更高优先级的进程进入就绪队列(针对使用优先级概念的调度算法)。

2、不能进行进程调度与切换的情况

(1)在处理中断的过程中。中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换。

(2)进程在操作系统内核程序临界区中。内核程序临界区访问的临界资源如果不尽快释放的话,极有可能影响到操作系统内核的其它管理工作,因此在访问内核程序临界区期间不能进行调度与切换;普通临界区访问的临界资源不会直接影响操作系统内核的管理工作,因此在访问普通临界区时可以进行调度与切换。

(3)在原子操作过程中。原子操作不可中断,要一气呵成。

二、进程调度的任务、机制和方式

1、进程调度的任务

(1)保存处理机的现场信息。在进行调度时首先需要保存当前进程的处理机的现场信息,如程序计数器、多个通用寄存器中的内容等。

(2)按某种算法选取进程。调度程序按某种算法从就绪队列中选取一个进程,将其状态改为运行状态,并准备把处理机分配给它。

(3)把处理器分配给进程。由分派程序把处理器分配给该进程,此时需要将选中进程的进程控制块内有关处理机现场的信息装入处理器相应的各个寄存器中,把处理器的控制权交予该进程,让它从上次的断点处恢复运行。

2、进程调度机制

(1)排队器。为了提高进程调度的效率,应事先将系统中的所有就绪进程按照一定的策略排成一个或多个队列,以便调度程序能最快地找到它,以后每当有一个进程转变为就绪状态时,排队器便将它插入到相应的就绪队列。

(2)分派器。分派器依据进程调度程序所选定的进程,将其从就绪队列中取出,然后进行从分派器到新选出进程间的上下文切换,将处理机分配给新选出的进程。

(3)上下文切换器。在对处理机进行切换时,会发生两对上下文的切换操作:

①第一对上下文切换时,OS将保存当前进程的上下文,即把当前进程的处理机寄存器内容保存到该进程的进程控制块内的相应单元,再装入分派程序的上下文,以便分派程序运行。

②第二对上下文切换是移出分派程序的上下文,而把新选进程的CPU现场信息装入到处理机的各个相应寄存器中,以便新选进程运行。

3、进程调度方式

(1)非抢占方式(非剥夺调度方式):

①在采用这种调度方式时,一旦把处理机分配给某进程后,就一直让它运行下去,绝不会因为时钟中断或任何其它原因去抢占当前正在运行进程的处理机,直至该进程完成,或发生某事件而被阻塞时,才把处理机分配给其它进程(也就是只允许进程主动放弃处理机)。

②在采用非抢占调度方式时,可能引起进程调度的因素可归结为:

[1]正在执行的进程运行完毕,或因发生某事件而使其无法再继续运行。

[2]正在执行中的进程因提出I/O请求而暂停执行。

[3]在进程通信或同步过程中,执行了某种原语操作,如Block原语。

③这种调度方式的优点是实现简单,系统开销小,适用于大多数的批处理系统,但它不能用于分时系统和大多数实时系统。

(2)抢占方式(剥夺调度方式):

①这种调度方式允许调度程序根据某种原则去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程

②在现代OS中广泛采用抢占方式,这是因为:

[1]对于批处理机系统,可以防止一个长进程长时间地占用处理机,以确保处理机能为所有进程提供更为公平的服务。

[2]在分时系统中,只有采用抢占方式才有可能实现人—机交互。

[3]在实时系统中,抢占方式能满足实时任务的需求,但抢占方式比较复杂,所需付出的系统开销也较大。

③“抢占”不是一种任意性行为,必须遵循一定的原则,主要原则有:

[1]优先权原则,指允许优先级高的新到进程抢占当前进程的处理机,即当有新进程到达时,如果它的优先级比正在执行进程的优先级高,则调度程序将剥夺当前进程的运行,将处理机分配给新到的优先权高的进程。

[2]短进程优先原则,指允许新到的短进程可以抢占当前长进程的处理机,即当新到达的进程比正在执行的进程(尚须运行的时间)明显短时,将处理机分配给新到的短进程。

[3]时间片原则,即各进程按时间片轮转运行时,当正在执行的进程的一个时间片用完后,便停止该进程的执行而重新进行调度。

三、轮转调度算法

1、轮转法的基本原理

(1)在分时系统中,为保证能及时响应用户的请求,必须采用基于时间片轮转式进程调度算法。

(2)在时间片轮转法(RR)中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给首进程,并令其执行一个时间片,时间片的大小从几ms到几百ms。当执行的时间片用完时,停止该进程的执行并将其送往就绪队列的末尾,系统将CPU分配给新的队首进程(或新到达的紧迫进程),这样就可以保证就绪队列中所有进程在一定时间内均能获得一时间片的处理机执行时间,系统能在给定的时间内响应所有用户的请求。

2、进程切换时机

(1)若一个时间片尚未用完,正在运行的进程便已经完成,就立即激活调度程序,将它从就绪队列中删除,再调度就绪队列中队首的进程运行,并启动一个新的时间片。

(2)在一个时间片用完时,计时器中断处理程序被激活,如果进程尚未运行完毕,调度程序将把它送往就绪队列的末尾。

3、时间片大小的确定

        在时间片轮转算法中,时间片的大小对系统性能有很大的影响。不能太短也不能太长,一个比较可取的大小是,时间片略大于一次典型的交互所需要的时间

四、优先级调度算法

1、概述

(1)在时间片轮转调度算法中做了一个隐含的假设,即系统中所有进程的紧迫性是相同的,但事实并非如此,为了满足实际情况的需要,在进程调度算法中引入优先级,从而形成优先级调度算法(高优先权优先调度算法)。

(2)此算法常用于批处理系统中,作为作业调度算法(PSA和HRRN),也作为多种操作系统中的进程调度算法,还可用于实时系统中。当该算法用于进程调度时,它分为非抢占式优先权算法和抢占式优先权调度算法两种。

2、优先级调度算法的类型

(1)非抢占式优先级调度算法。该算法规定,一旦把处理机分配给就绪队列中优先级最高的进程后,该进程便一直执行下去直至完成,或者因该进程发生某事件而放弃处理机时,系统方可将处理机重新分配给另一优先级最高的进程。

(2)抢占式优先级调度算法。把处理机分配给优先级最高的进程,使之执行,但在其执行期间,只要出现了另一个其优先级更高的进程,调度程序就将处理机分配给新到的优先级最高的进程。

3、优先级的类型

(1)静态优先级:

①静态优先级是在创建进程时确定的,在进程的整个运行期间保持不变。优先级是利用某一范围内的一个整数来表示的,例如0~255中的某一整数,又把该整数称为优先数。

②确定进程优先级大小的依据有如下三个:

[1]进程类型。通常系统进程(如接收进程、对换进程)的优先级高于一般用户进程的优先级。

[2]进程对资源的需求。对资源要求少的进程应赋予较高的优先级。

[3]用户要求。根据进程的紧迫程度及用户所付费用的多少确定优先级。

(2)动态优先级:

        动态优先级是指在创建进程之初,先赋予其一个优先级,然后其值随进程的推进或等待时间的增加而改变,以便获得更好的调度性能。

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

1、调度机制

(1)设置多个就绪队列。

在系统中设置多个就绪队列,并为每个队列赋予不同的优先级,第一个队列的优先级最高,第二个次之,其余队列的优先级逐个降低

②该算法为不同队列中的进程所赋予的执行时间片的大小也各不相同,在优先级愈高的队列中,其时间片就愈小

(2)每个队列都采用FCFS算法。

当一个新进程进入内存后,首先将它放入第一个队列的末尾,按FCFS原则排队等待调度。

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

(3)按队列优先级调度。

①调度程序首先调度最高优先级队列中的诸进程运行,仅当第一队列空闲时才调度第二队列中的进程运行,换言之,仅当第1~(i-1)所有队列均空时才会调度第i队列中的进程运行

②如果处理机正在第i队列中为某进程服务时又有新进程进入任一优先级较高的队列,此时须立即把正在运行的进程放回到第i队列的末尾,而把处理机分配给新到的高优先级进程。

2、调度算法的性能

(1)终端型用户。由于终端型用户提交的作业多属于交互型作业,通常较小,系统只要能使这些作业在第一队列规定的时间片内完成,便可使终端型用户感到满意。

(2)短批处理作业用户。对于这类作业,如果可在第一队列中执行完成,便获得与终端型作业一样的响应时间;对于稍长的短作业,也只需在第二和第三队列各执行一时间片完成,其周转时间仍然较短。

(3)长批处理作业用户。对于长作业,它将依次在第1、2、…、n个队列中运行,然后再按轮转方式运行,用户不必担心其作业长期得不到处理,

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

1、保证调度算法

(1)保证调度算法是另外一种类型的调度算法,它向用户所做出的保证并不是优先运行,而是明确的性能保证,该算法可以做到调度的公平性。

(2)一种比较容易实现的性能保证是处理机分配的公平性。如果在系统中有n个相同类型的进程同时运行,为公平起见,须保证个进程都获得相同的处理机时间1/n。

(3)在实施公平调度算法时系统中必须具有这样一些功能:

①跟踪计算每个进程自创建以来已经执行的处理时间。

②计算每个进程应获得的处理机时间,即自创建以来的时间除以n。

③计算进程获得处理机时间的比率,即进程实际执行的处理时间和应获得的处理机时间之比。

④比较各进程获得处理机时间的比率。如进程A的比率最低,为0.5,而进程B的比率为0.8,进程C的比率为 1.2等。

⑤调度程序应选择比率最小的进程将处理机分配给它,并让该进程一直运行,直到超过最接近它的进程比率为止。

2、公平分享调度算法

(1)分配给每个进程相同的处理机时间,显然,这对诸进程而言是体现了一定程度的公平,但如果各个用户所拥有的进程数不同,就会发生对用户的不公平问题。假如系统中仅有两个用户,用户1启动了4个进程,用户2只启动1个进程,采用轮转法让每个进程轮流运行一个时间片时间,对进程而言很公平,但用户1和用户2得到的处理机时间分别为80%和20%,显然对用户2而言就有失公平。

(2)在该调度算法中,调度的公平性主要是针对用户而言,使所有用户能获得相同的处理机时间,或所要求的时间比例。然而调度又是以进程为基本单位,为此,必须考虑到每一个用户所拥有的进程数目。

(3)举例:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值