26计算机操作系统408考研--操作系统处理机调度篇章(六)


一、调度简介

计算机系统中,处理器和内存资源会出现供不应求的情况,特别是多个I/O设备与主机交互,作业不断进入系统,或者是多个批处理作业在磁盘的后备队列中等待进入内存的情况。操作系统在管理有限的资源的同时,需要考虑如何选取进入内存的作业,如何分配有限的处理器资源给多个进程等重要问题。处理器的调度正是处理器和内存资源调度和分配相关的工作。

高级调度
高级调度又称为作业调度、长调度。调度对象是作业。作业是一个比程序更为广泛的概念,不仅包含通常的程序和数据,还配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。从输入系统的一批作业中按照预定调度策略选择进入主存的作业,为其分配资源,创建进程,以上就是高级调度。作为启动阶段的调度,为进程的运行做好准备工作,等待进程调度选择进程进行运行。

低级调度
低级调度又称为进程调度、短调度调度对象是进程。根据主存资源,决定就绪队列中的有多少个并且哪些进程应获得处理机,然后再由分派程序执行把处理机分配给该进程的具体操作。包括对处理机现场信息的保存,如程序计数器、多个通用寄存器中的内容等,将它们送入该进程的**进程控制块(PCB)**中的相应单元。然后按某种算法选取进程,把就绪队列中被选中的进程的状态改为运行状态,并准备把处理机分配给它。

中级调度
中级调度介于高级调度和低级调度之间。该调度根据进程状态决定辅存和主存之间的进程对换。主存资源紧缺时,将暂时不能运行的进程换出,进程转为挂起状态;主存资源空闲,并且进程满足运行条件时,再将进程调回主存。对主存的利用和系统吞吐率都有很大的提升。

在上述三种调度中,进程调度是操作系统最核心的部分,运行频率最高,因此把它称为短程调度。为避免进程调度占用太多的CPU时间,进程调度算法不宜太复杂。作业调度往往是发生在一个(批)作业运行完毕,退出系统,而需要重新调入一个(批)作业进入内存时,故作业调度的周期较长,大约几分钟一次,因此把它称为长程调度。在纯粹的分时或实时操作系统中通常不需要作业调度。中级调度的运行频率基本上介于上述两种调度之间。一些功能完善的操作系统为了提高主存利用率和作业吞吐率,会引入中级调度。

在这里插入图片描述

  • 如图4.2所示,被高级调度选中的作业,从后备队列中,通过多个作业步:编译、链接、装入、运行,称为目标进程,进入主存的就绪队列等候。就绪队列中的进程以此被分配相同的时间片获得处理器。如果进程在给定的时间片内顺利完成,便在释放处理机进入完成状态;
  • 如果进程在本次分配的时间片内尚未完成,该进程会到就绪队列的末尾等待下一个时间片;
  • 如果在执行期间进程因为某事件而被阻塞,则进入等待队列,进入挂起状态,进入挂起阻塞队列,直到等待的事件发生,再进入挂起就绪队列,等待中级调度将其调回主存就绪队列。

在这里插入图片描述

作业的相关介绍
在作业运行期间,每个作业都必须经过若干个相对独立,又相互关联的顺序加工步骤才能得到结果,其中的每一个加工步骤就是一个作业步,上一个作业步的输出一般是下一个作业步的输入。
例如,一个典型的作业可分成四个作业步:

  1. ① “编译”,通过执行编译程序对源程序进行编译,产生若干个目标程序段;
  2. ② “链接”,将“编译”作业步所产生的若干个目标程序段通过库函数链接在一起;
  3. ③“装配”,将链接好的部分装配成可执行的目标程序;
  4. ④“运行”,将可执行的目标程序读入内存并控制其运行。

若干个作业进入系统后,被依次存放在外存上,形成了输入的作业流;在操作系统的控制下,逐个作业进行处理,于是便形成了处理作业流。

作业的管理和调度
每个作业设置了一个作业控制块
保存了系统对作业进行管理和调度所需的全部信息,是作业在系统中存在的标志

在作业控制块中通常应包含的内容有:
作业标识、用户名称、用户帐户、作业类型、作业状态、优先级、作业已运行时间、 (预计运行时间、要求内存大小、要求I/O设备的类型和数量等、进入系统时间、开始处理时间、作业完成时间、作业退出时间、资源使用情况等。

作业管理
建立作业控制块:系统便为每个进入系统的作业建立一个作业控制块,根据作业类型将它插入相应的后备队列中
调度:作业调度程序依据一定的调度算法来调度它们,将它们装入内存
控制:在作业运行期间,系统就按照作业控制块中的信息对作业进行控制
回收资源:当一个作业执行结束进入完成状态时,系统负责回收分配给它的资源,撤消它的作业控制块

作业调度

审查:根据作业控制块中的信息,审查系统能否满足用户作业的资源需求
将作业调入内存:按照一定的算法,从外存的后备队列中选取某些作业调入内存为它们创建进程分配必要的资源
插入就绪队列:将新创建的进程插入就绪队列,准备执行

考虑的问题:作业调度要考虑每次允许多少个作业同时在内存中运行?
当内存中同时运行的作业数目太多时,可能会影响到系统的服务质量,使周转时间太长等
如果在内存中同时运行作业的数量太少时,又会导致系统的资源利用率和系统吞吐量太低

  • 根据系统规模和运行速度等情况做适当的折衷

依据所采用的调度算法,决定应将哪些作业从外存调入内存,通常优先调入内存的作业有:

  1. 最早进入外存的作业(先来先服务调度算法)
  2. 外存上最短的作业(短作业优先调度算法)
  3. 外存上优先级最高的作业(优先级调度算法)

周转时间:指从作业被提交给系统开始,到作业完成为止的这段时间间隔。

  • 周转时间的长短是评价批处理系统的性能、选择作业调度方式与算法的重要准则之一
  • 周转时间=后备队列等待时间+就绪队列等待时间*+CPU执行时间*+等待I/O完成时间*
  • 带*项可能会发生多次

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

、
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
最低松弛度优先(Least Laxity First,LLF)算法  该算法在确定任务的优先级时,根据的是任务的紧急(或松弛)程度。任务紧急程度愈高,赋予该任务的优先级就愈高,以使之优先执行。   该算法主要用于可抢占调度方式中。假如在一个实时系统中有两个周期性实时任务A和B,任务A要求每20 ms执行一次,执行时间为10 ms,任务B要求每50 ms执行一次,执行时间为25 ms。由此可知,任务A和B每次必须完成的时间分别为:A1、A2、A3、…和B1、B2、B3、…,见图c。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
动态调度算法
操作系统和应用进程共同进行调度决策。如何在应用进程之间分配处理器由操作系统决定;应用线程决定在已分配的处理器上哪些可运行的线程可执行、哪些需要挂起。操作系统调度的具体原则如下:
分配空闲的处理器以满足进程的请求
没有空闲的处理器,从当前分配多个处理器的任一个进程中回收一个处理器,将该处理器分配给请求的进程。
任何分配都无法满足该请求,则该进程保持未完成的状态,直到有足够的处理器可用或者进程取消该请求。
每释放一个或者多个处理器时,都要对还没解决过的请求处理器的进程队列进行扫描,为其中的尚未没分配过的进程分配处理器,如果还有多余的处理器资源,则再次扫面队列,按照先来先服务原则分配处理器。

死锁

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这种算法资源按某种规则对系统中的所有资源统一编号,申请时必须以某种顺序依次申请,如上升的次序。
例如:进程A,使用资源的顺序是R1,R2;进程B,使用资源的顺序是R2,R1;如果采用动态分配有可能形成环路条件:A保持资源R1,B保持资源R2,它们各自所需的另一个资源都在对方手中,造成死锁。
采用有序资源分配法:R1的编号为1,R2的编号为2; A和B对各自所需要资源的申请次序都是:R1,R2 。这样就破坏了请求和保持条件,避免了死锁的发生。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值