操作系统复习(十)——进程调度与实时调度

进程调度

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

1.进程调度的任务

  1. 保存处理机的现场信息。
  2. 按照某种算法选取进程。
  3. 把处理器分配给进程。

2.进程调度机制
进程调度机制中,应该有三个基本部分

  1. 排队器,用于将就绪进程按照一定策略排成一个或多个队列,方便调度程序能最快找到目标进程,提高进程调度的效率。
  2. 分派器,根据进程调度程序选定的进程,分派器将处理及分配给选出的进程。
  3. 上下文切换器,在对处理机进行切换时,会发生两对上下文的切换操作。第一对上下文切换时,OS保存当前进程的上下文,再装入分派程序的上下文,以便分派程序运行;第二对上下文切换是移出分派程序的上下文,把新选进程的CPU现场信息装入到处理机的各个相应寄存器中,以便新选进程的运行。

3.进程调度方式

(1)非抢占方式:采用这种调度方式时,处理机一旦分配给某进程后,就让它一直运行,直到该进程完成,中途不会因任何原因被抢占运行,除非发生某事件,该进程被阻塞,才会把处理机分配给其他进程。(此方式实现简单,系统开销小,适用于大多数批处理系统,但不能用于分时系统和大多数实时系统)
此方式下,可能引起进程调度的因素:

  1. 正在运行的进程执行完毕,或者因为某事件而阻塞无法继续运行。
  2. 正在执行的进程因提出I/O请求而暂停执行。
  3. 进程通信或同步过程中,执行了某种原语操作。

(2)抢占方式:此方式下允许调度程序根据某种原则,去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。
抢占方式遵循的主要原则:

  1. 优先级,即只允许优先级比正在执行进程的优先级高的新到进程去抢占。
  2. 短进程优先,允许新到的短进程去抢占当前长进程的处理机。
  3. 时间片各进程按照时间片轮转运行时,当正在执行的进程时间片用完后,便停止该进程的执行重新进行调度。
轮转调度算法

基于时间片的轮转调度算法RR,让就绪队列上的每个进程每次仅运行一个时间片。如果就绪队列上有N个进程,则每个进程每次大约都可获得1/N的处理及时间。

在RR调度算法中,进程切换可分为两种情况:(1)一个时间片尚未完成,正在运行的进程便已经完成,就立即激活调度程序,将它从就绪队列中删除,再调度就绪队列中队首的进程运行,并启动一个新的时间片。(2)一个时间片用完时,计时器中断处理程序被激活。如果进程尚未运行完毕,调度程序将它送往就绪队列队尾。

轮转算法中,时间片的大小对系统性能有很大影响。选择很小的时间片,有利于短作业,相应的会频繁执行进程调度和进程上下文切换,增加了系统的开销。时间片选得太长,且为使每个进程都能在一个时间片内完成,RR算法便退化为FCFS算法,无法满足短作业和交互式用户的需求。
时间片大小的确定需要略大于一次典型的交互所需要的时间,使大多数交互式进程能在一个时间片内完成,从而可以获得很小的响应时间。

完成时间指从零开始到进程的服务时间累计全部获得并执行完成的所用时间。
周转时间指进程完成时间减去进程到达时间,即进程到达就绪队列后直至完成所用的时间。
带权周转时间 = 周转时间 / 服务时间。
在这里插入图片描述

优先级调度算法

优先级调度算法有两类:非抢占式和抢占式优先级调度算法。

优先级的类型
(1)静态优先级:在创建时确定,进程的整个运行期间保持不变。确定优先级的依据:进程类型,进程对资源的需求以及用户的要求。静态优先级法简单易行,系统开销小,但不够精确,可能会出现优先级低的进程长期没有被调度的情况。
(2)动态优先级:创建时先赋予一个优先级,然后优先级值随进程的推进或等待时间的增加而改变,以便获得更好的调度性能。

多队列调度算法

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

因为多队列调度算法安排了多个就绪队列,在多处理机系统中,很方便为每个处理机设置一个单独的就绪队列。这样,不仅对每个处理机的调度可以实施不同的调度策略,而且对于一个含有多个线程的进程而言,可以根据其要求将其所有线程分配在一个就绪队列,全部在一个处理机上运行。

多级反馈队列调度算法

前面介绍的各种用于进程调度的算法都有一定的局限性,如果未指明进程长度,则短进程优先和基于进程长度的抢占式调度算法都将无法使用。

多级反馈队列调度算法:设置多个就绪队列;每个队列都采用FCFS算法;按队列优先级调度。

基于公平原则的调度算法

(1)保证调度算法:保证调度算法是另外一种类型的调度算法,它向用户所做出的保证并不是优先运行,而是明确的性能保证,该算法可以做到调度的公平性。是一种比较容易实现的性能保证是处理机分配的公平性,比如系统中有n个相同类型的进程同时运行,为公平起见,须保证每个进程都获得相同的处理机时间1/n。
(2)公平分享调度算法:对于上述的保证调度算法,是对诸进程而言体现的一定程度的公平性。但对于用户来讲就不一定公平。因此,在该调度算法中,调度的公平性主要针对用户而言,是所有用户能获得相同的处理机时间,或者所要求的时间比例。

假如系统中仅有两个用户,用户1启动了四个进程(A、B、C、D),用户2只启动了1个进程(E)。
对于保证进程公平的调度序列为:A B C D E A B C D E…
对于保证用户的公平的调度序列为:A E B E C E D E A E B E C E D E…

实时调度

实现实时调度的基本条件

1.提供必要的信息:就绪时间;开始截止时间和完成截止时间;处理时间;资源要求;优先级。
2.系统的处理能力要足够强。
3.采用抢占式调度机制。
4.具有快速切换机制:对中断的快速响应能力;快速的任务分配能力。

实时调度算法的分类

根据不同方式对实时调度算法分类:·

  1. 根据实时任务性质,可分为硬实时调度算法和软实时调度算法。
  2. 按调度方式可分为非抢占式调度算法和抢占调度算法。

1.抢占式调度算法:非抢占式轮转调度算法那;非抢占式优先级调度算法。
2.抢占式调度算法:基于时钟中断的抢占式优先级调度算法;立即抢占的优先级调度算法、

最早截止时间优先算法EDF

该算法是根据任务的截止时间确定任务的优先级,任务的截止时间越早,其优先级越高,具有最早截止时间的任务排在队列的队首。调度程序在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机。最早截止时间优先算法既可用于抢占式调度方式中,也可用于非抢占式调度方式中。

非抢占式调度方式用于非周期实时任务。
抢占式调度方式用于周期实时任务。

最低松弛度优先算法LLF

该算法在确定任务的优先级时,根据的是人物的紧急(或松弛)程度。任务紧急程度越高,赋予该任务的优先级就越高,以使之优先执行。该算法主要用于可抢占调度方式中。

任务的松弛度 = 必须完成时间 - 其本身的运行时间 - 当前时间

优先级倒置

形成原因:高优先级可以优先执行,但可能因为低优先级进程与高优先级进程共享临界资源,出现了高优先级进程因为低优先级进程未释放临界资源而被阻塞了,此时又因为存在介于两者优先级之间的进程存在而延长了高优先级进程被阻塞的时间,而且被延长的时间是不可预知和无法限定的。

解决办法:
(1)一种简单的解决方法,规定:加入低优先级进程进入临界区后,低优先级所占用的处理机就不允许被抢占。
(2)比较实际的方法是建立在动态优先级继承基础上的。规定:当高优先级进程P要进入临界区,去使用临界资源R,如果已有一个低优先级进程Q正在使用该资源,此时一方面P被阻塞,另一方面由Q继承P的优先级,并一直保持到Q退出临界区。这样做的目的在于不让比Q优先级稍高,但比P优先级低的进程插进来,导致延缓Q退出临界区。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值