计算机操作系统-处理机调度与死锁

学习总结目录:

处理机调度的层次和调度算法的目标

在多道程序系统中,调度的实质是一种资源分配,处理机调度是对处理杋资源进行分配。处理机调度算法是指根据计算处理机分配策略所规定的处理机分配算法。

1.1 处理机调度的层次:

  • 高级调度( High Level Scheduling): 又叫做长调度或作业调度,调度对象是作业(主要用于多道批处理系统,分时系统、实时系统中不设置高级调度)
  • 低级调度( Low Leve| Scheduling): 又叫做进程调度或短进程调度,调度的对象是进程,通过相关算法决定就绪队列中的哪个进程应该获得处理机,在多道批处理,分时、实时系统中都必须配置这级调度
  • 中级调度( Intermediate Scheduling): 又叫做内存调度,主要目的是提高内存利用率和系统吞吐量。

1.2 处理机调度算法的目标

1. 处理机调度算法的共同目标

  • 资源利用率,为提高系统的资源利用率,应使系统中的处理机和其它所有资源都尽可能地保持忙碌状态(其中CPU是最重要的资源)
    在这里插入图片描述
  • 公平性,公平性是指应使诸进程都获得合理的CPU时间,不会发生进程饥饿现象。
  • 平衡性,使系统中的CPU和各种外部设备都能经常处于忙碌状态,调度算法应尽可能保持系统资源使用的平衡性
  • 策略强制执行,对所制订的策略其中包括安全策略,只要需要,就必须予以准确地执行

2. 批处理系统的目标

  • 平均周转时间短
    所谓周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。包括四部分时间:作业在外存后备队列上等待调度的时间,进程在就绪队列上等待进程调度的时间,进程在CPU上执行的时间,进程等待I/O操作完成的时间。

    平均周转时间:
    在这里插入图片描述
    平均带权周期时间:
    在这里插入图片描述

  • 系统吞吐量高。由于吞吐量是指在单位时间内系统所完成的作业数,因而它与批处理作业的平均长度有关。事实上,如果单纯是为了获得高的系统吞吐量,就应尽量多地选择短作业运行。

  • 处理机利用率高。对于大、中型计算机,CPU价格十分昂贵,致使处理机的利用率成为衡量系统性能的十分重要的指标;而调度方式和算法又对处理机的利用率起着十分重要的作用。如果单纯是为使处理机利用率高,应尽量多地选择计算量大的作业运行。

3. 分时系统的目标

  • 响应时间快(响应时间:用户通过键盘提交一个请求开始,直到屏幕上显示出处理结果为之的一段时间间隔包括三部分:请求信息从键盘输入开始直到传送到处理机的时间、处理机对请求信息处理的时间、将形成的响应信息送到终端显示器的时间)
  • 均衡性

4. 实时系统的目标

  • 截止时间的保证(截止时间:某任务必须开始执行的最迟时间,或必须完成的最迟时间)
  • 可预测性

作业与作业调度

在多道批处理系统中,作业是用户提交给系统的一项相对独立的工作。操作员把用户提交的作业通过相应的输入设备输入到磁盘存储器,并保存在一个后备作业队列中。再由作业调度程序将其从外存调入内存。

先来先服务(FCFS)

FCFS是最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度。

短作业优先(SJF)

由于在实际情况中,短作业(进程)占有很大比例,为了能使它们能比长作业优先执行,而产生了短作业优先调度算法)短作业优先算法,SJF算法是以作业的长短来计算优先级,作业越短,其优先级越高。

短作业优先算法的缺点:

  • 必须预知作业的运行时间
  • 对长作业非常不利,长作业的周转时间会明显地增长。更严重的是,该算法完全忽视作业的等待时间,可能使作业等待时间过长,出现饥饿现象
  • 在采用FCFS算法时,人—机无法实现交互。
  • 该调度算法完全未考虑作业的紧迫程度,故不能保证紧迫性作业能得到及时处理。

优先级调度算法(PSA)
对于先来先服务调度算法,作业的等待时间就是作业的优先级,等待时间越长,其优先级越高。

  • (1)分为抢占式和非抢占式的
  • (2)优先级的类型有静态优先级和动态优先级
    ①静态优先级是在创建进程时确定的,在进程的整个运行期间保持不变。确定进程优先级大小的依据有:进程类型(系统进程高于用户进程),进程对资源的要求(要求少的优先级高),用户要求(根据进程紧迫程度和用户所付费用的多少来确定)②动态优先级:等待时间越长优先级越高,运行时间越长优先级越低

高响应比优先调度算法 (HRRN)

在批处理系统中,FCFS算法所考虑的只是作业的等待时间,而忽视了作业的运行时间。而SJF算法正好与之相反,只考虑作业的运行时间,而忽视了作业的等待时间。高响应比优先调度算法则是既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。

每个作业都有一个动态优先级,它随等待时间延长而增加,这将使长作业的优先级在等待期间不断地增加,等到足够的时间后,必然有机会获得处理机。该优先级的变化规律可描述为:
在这里插入图片描述

由于等待时间与服务时间之和就是系统对该作业的响应时间,优先级可表示为:
在这里插入图片描述

转轮调度算法(RR)
分时系统中,最简单和比较常用的基于时间片的转轮调度算法,将进程排成一个就绪队列,每过一个时间段进行一次中断,激活系统中的程序并完成一次调度,依次执行进程。这样保证了就绪中的队列所有进程在一个确定的时间内能够获得一次CPU执行。

  • (1)只适应于进程调度
  • (2)时间片太小,意味着会频繁的执行进程调度和进程上下文的切换,会增加系统开销
  • (3)时间片太大,RR算法会退化为先来先服务算法,无法满足短作业和交互式用户的需求。

多级反馈队列调度算法:
调度机制:

  • 设置多个就绪队列,第一个队列优先级最高,第二个次之,执行时间片的大小也不相同,优先级越高的队列,时间片越小。
  • 每个队列都采用FCFS算法。
  • 按队列优先级进行调度
    特点:结合了FCFS,时间片轮转,优先级来实现的,不考虑运行时间,平均周转时间没有变小。能较好地满足各种类型用户的需求。

进程调度

进程调度的任务:

  • (1)保存处理机的现场信息
  • (2)按某种算法选取进程
  • (3)把处理机分配给进程

进程调度方式:

  • 非抢占方式( Nonpreemptive Mode)
    一旦把处理机分配给某进程后就一直让它运行下去,直至该进程完成,或发生某事件而被阻塞时,才把处理机分配给其它进程。(不适合严格的实时系统,实现简单,系统开销小,适用于大多数批处理系统,但是不能立即执行)
  • 抢占方式( Preemptive Mode)
    这种调度方式允许调度程序根据某种原则,去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另进程。(适用于要求严格的实时系统,可防止一个长进程长时间占用处理机,但是系统开销较大)

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

  • 优先权原则
  • 短进程优先原则
  • 时间片原则

死锁

资源问题:

1. 可重用性资源和消耗性资源

可重用性资源是一种可供用户重复使用多次的资源,它具有如下性质:

  • 每一个可重用性资源中的单元只能分配给一个进程使用,不允许多个进程共享。
  • 进程在使用可重用性资源时,须按照这样的顺序:①请求资源、②使用资源、③释放资源
  • 系统中每一类可重用性资源中的单元数目是相对固定的,进程在运行期间既不能创建也不能删除它。

可消耗性资源又称为临时性资源,它是在进程运行期间,由进程动态地创建和消耗的

2.可抢占性资源和不可抢占性资源

可把系统中的资源分成两类,一类是可抢占性资源,是指某进程在获得这类资源后,该资源可以再被其它进程或系统抢占。另一类资源是不可抢占性资源,即一旦系统把某资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。

计算机系统中的死锁:

1. 竞争不可抢占性资源引起死锁

通常系统中所拥有的不可抢占性资源其数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局。
在这里插入图片描述
2. 竞争可消耗资源引起死锁
现在进一步介绍竞争可消耗资源所引起的死锁。如图:三个进程之间,在利用消息通信机制进行通信时所形成的死锁情况
在这里插入图片描述
3. 进程推进顺序不当引起死锁
除了系统中多个进程对资源的竞争会引发死锁外,进程在运行过程中,对资源进行申请和释放的顺序是否合法,也是在系统中是否会产生死锁的一个重要因素

死锁的定义、必要条件和处理方法

1. 死锁的定义
在一组进程发生死锁的情况下,这组死锁进程中的每个进程,都在等待另一个死锁进程所占有的资源。

2. 产生死锁的必要条件
虽然进程在运行过程中可能会发生死锁,但产生进程死锁是必须具备一定条件的。综上所述不难看出,产生死锁必须同时具备下面四个必要条件,只要其中任一个条件不成立,死锁就不会发生

  • 互斥条件:某段时间一个资源只能被一个进程占用
  • 请求和保持条件:进程中至少保持一个资源
  • 不可抢占条件:进程获得的资源在未使用完之前不能被抢占
  • 循环等待条件:发生死锁时,必然存在一个进程/资源的循环链

3. 处理死锁的方法

  • 预防死锁:预防死锁的方法是通过破坏产生死锁的四个必要条件中的一个或几个,以避免发生死锁。由于互斥条件是非共享设备所必须的,不仅不能改变,还应加以保证,因此主要是破坏产生死锁的后三个条件。
  • 避免死锁:在资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁。这种方法所施加的限制条件较弱,可能获得较好的系统性能,目前常用此方法来避免发生死锁。(银行家算法)
  • 检测死锁:为了能对系统中是否已发生了死锁进行检测,在系统中必须:①保存有关资源的请求和分配信息;②提供一种算法,它利用这些信息来检测系统是否已进入死锁状态。
  • 解除死锁:两个方法:终止所有死锁进程、逐个终止进程

当系统有可能发生死锁时,系统应当提供两个算法:
①死锁检测算法。该方法用于检测系统状态,以确定系统中是否发生了死锁。
②死锁解除算法。当认定系统中已发生了死锁,利用该算法可将系统从死锁状态中解脱出来。

利用银行家算法避免死锁
最有代表性的避免死锁的算法是 Dijkstra的银行家算法。该算法原本是为银行系统设计的,以确保银行在发放现金贷款时,不会发生不能满足所有客户需要的情况。在OS中也可用它来实现避免死锁

银行家算法中的数据结构:
为了实现银行家算法,在系统中必须设置这样四个数据结构,分别用来描述系统中可利用的资源、所有进程对资源的最大需求、系统中的资源分配,以及所有进程还需要多少资源的情况。

  • 可利用资源向量 Available
  • 最大需求矩阵Max
  • 分配矩阵 Allocation
  • 需求矩阵Need

在这里插入图片描述

练习题

一、选择题:

1、在单处理器的多进程系统中,进程什么时候占有处理器以及决定占用时间的长短是由( )决定的。
A、进程运行时间 B、进程的特点和进程调度策略
C、进程执行的代码 D、进程完成什么功能

2、时间片轮转算法是为了( )
A、多个用户能及时干预系统 B、优先级较高的进程能得到及时响应
C、是系统变得更为高效 D、需要CPU时间最少的进程最先执行

3、( )有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业。
A、时间片轮转算法 B、先来先服务调度算法
C、短作业优先算法 D、优先级调度算法

4、为了照顾短作业用户应采用( )调度算法;为了能实现人机交互应采用( )调度算法;既能使短作业用户满意又能使长作业用户满意应采用( )调度算法。
A、FCFS B、SJF C、HRRN D、RR

5、有三个作业分别为J1、J2、J3,其运行时间分别为2h、5h、3h,假定它们能同时达到,并在同一台处理器上以单刀方式运行,则平均周转时间最小的执行顺序为( )

6、关于优先权大小的论述中,正确的是( )。
A、资源要求多的作业优先权应高于资源要求少的作业优先权
B、用户进程的优先权,应高于系统进程的优先权
C、在动态优先权中,随着作业等待时间的增加,其优先权将随之下降
D、在动态优先权中,随着作业执行时间的增加,其优先权将随之下降

7、进程调度算法采用固定时间片轮转调度算法,当时间片过大时,就会使时间片轮转算法转化为( )调度算法。
A、HRRN B、FCFS C、SPF D、优先级

8、在调度算法中,对短进程不利的是( )调度算法。
A、SPF B、FCFS C、HRRN D、多级反馈队列

9、下列选项中,满足短任务优先且不会发生饥饿现象的调度算法是( ),最有利于提高系统吞吐量的调度算法是( )。
A、FCFS B、 HRRN C、 RR D、SJ§F

10、下列调度算法中,不可能导致饥饿现象的调度算法是( )。
A、RR B、静态优先数调度
C、非抢占式短作业优先 D、抢占式短作业优先

11、一个进程的读磁盘操作完成后,操作系统针对该进程必做的是( )。
A、修改进程状态为就绪态 B、降低进程优先级
C、给进程分配用户内存空间 D、增加进程时间片大小

12、采用时间片轮转调度算法分配CPU时,当处于运行状态的进程用完一个时间片后,它的状态是( )状态。
A、阻塞 B、运行 C、就绪 D、消亡

13、下列情况会导致系统发生死锁的是( )。
A、进程释放资源 B、一个进程进入死循环
C、多个进程竞争资源出现了循环等待 D、多个进程竞争使用共享型的设备

14、对资源采用按序分配策略能达到( )的目的。
A、预防死锁 B、避免死锁 C、检测死锁 D、解除死锁

15、死锁预防是保证系统不进入死锁状态的静态策略,其解决办法是破坏产生死锁的4个必要条件之一,下列办法中破坏了“循环等待”条件的是( )。
A、银行家算法 B、一次性分配策略 C、剥夺资源法 D、资源有序分配策略

16、银行家算法是一种( )算法。
A、预防死锁 B、避免死锁 C、检测死锁 D、解除死锁

17、在下列解决死锁的方法中,属于死锁预防策略的是( )。
A、银行家算法 B、一次性分配策略
C、资源分配图简化 D、死锁检测

18、某系统有n台互斥使用的同类设备,三个并发进程分别需要 3、4、5 台设备,可确保系统不发生死锁的设备数 n 最小为( )。
A.9 B.10 C.11 D.12

19、某计算机系统中有 8 台打印机,由 K 个进程竞争使用,每个进程最多需要 3 台打印机。该系统可能会发生死锁的 K 的最小值是( )。
A.2 B.3 C.4 D.5

20、死锁与安全状态的关系是( )。
A.死锁状态有可能是安全状态 B.安全状态有可能成为死锁状态
C.不安全状态就是死锁状态 D.死锁状态一定是不安全状态

21、下列关于死锁的说法正确的是( )。
I.死锁状态一定是不安全状态
II.系统资源分配不足和进程推进顺序非法是产生死锁的原因
III.资源的有序分配策略可以破坏死锁的循环等待条件
IV.采用资源剥夺方法可以解除死锁,还可以采用撤销进程方法解除死锁
A.Ⅰ B.Ⅰ、Ⅱ C.Ⅰ、Ⅲ D.Ⅰ、Ⅱ、Ⅲ、Ⅳ

1-3 BAB 4. B D C 5. J1、J3、J2
6-8 DBB 9. B D 10. A
11-15 ACCAD 16-21 BBBCDD

二、综合应用题

1、假设在一个处理机上执行5个作业,作业的到达时间和运行时间分别如表所示:
在这里插入图片描述
分别采用FCFS、SJF和HRRN算法,作业的执行顺序和平均周转时间是多少?

FCFS:先来先服务调度算法
在这里插入图片描述
执行顺序:A B C D E
平均周转时间=(3+6+7+13+16)/5=9
SJF:短作业优先算法
在这里插入图片描述
执行顺序:A C E B D
平均周转时间=(3+12+2+17+4)/5=7.6
HRRN:高响应比优先调度算法
在这里插入图片描述
执行顺序:A B C E D
平均周转时间=(3+6+7+17+9)/5=8.4

2、设系统中有三类资源A、B和C,5个进程P1,P2,P3,P4和P5,在T0时刻系统状态如下:
(1)给出T0时刻各进程的资源需求量NEED。
(2)系统是否处于安全状态?如是,则给出进程安全序列。
(3)在T1时刻如果进程P2申请1个A类资源、1个B类资源,能否实施分配?为什么?

在这里插入图片描述

1.
在这里插入图片描述
2. 存在安全序列:{P4,P2,P1,P3,P5}
在这里插入图片描述
3.
Request(1,1,0)<=Need(2,2,2)
Request(1,1,0)<=Available(2,2,1)
系统试着把资源分配给进程P2,并修改数据结构中的数据:
在这里插入图片描述
存在安全序列:{P4,P2,P1,P3,P5}
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

龙源lll

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

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

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

打赏作者

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

抵扣说明:

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

余额充值