操作系统复习(3)处理机调度与死锁

一、概述

1.1了解调度的层次

  • 调度是指,在一个队列中,按照某种方法(算法),选择一个合适的个体的过程。
  • 进程调度的功能就是按一定策略、动态地把CPU分配给处于就绪队列中的某一进程,并使之执行。
  1. 作业调度(高级调度):内存与外存之间的调度
  2. 内存调度(中级调度):挂起态和就绪态间的相互转换
  3. 进程调度(低级调度):就绪态转到运行态

 

高级调度 

高级调度(长程调度或作业调度)仅在批处理,外存上处于后备队列的作业调入内存

(1)接纳多少作业到内存:从磁盘的后备队列到内存

(2)接纳哪些作业到内存:通过调度算法选择

抢占的原则有: 

(1)优先权原则。

(2) 短作业(进程)优先原则。

(3) 时间片原则。   

低级调度

低级调度(进程调度或短程调度):就绪队列中选哪个进程应获得处理机

作业控制块JCB

(1)进程调度的任务:保存cpu的现场;选取要执行的进程执行;把处理机分配给进程

(2)进程调度实现:排队器:队列等数据结构;分派器:调度程序;上下文切换器

(3)进程的调度方式::

        1)非抢占方式:仅在进程运行完或者阻塞才进行调度

        2)抢占方式:进程在运行过程中可以被抢占CPU,抢占的原则:优先级和时间片

引起进程调度的原因:

①正在运行的进程运行完毕;

②运行中的进程要求I/O操作;

③执行某种原语操作(如P操作)导致进程阻塞;

④一个比正在运行进程优先级更高的进程申请运行(抢占调度方式);

⑤分配给运行进程的时间片已经用完等等。 

中级调度

中级调度(内存调度):暂时不能执行的进程调入外存等待(仅了解) 

1.2衡量指标 

(1)资源利用率:资源处于忙状态时间所占的百分比

(2)吞吐量:单位时间内完成的进程数量

(3)周转时间:进程从初始化到结束(包括等待)的总时间

(4)等待时间:进程在就绪队列中的总时间。或者用带权周转时间:带权周转时间=周转时间/服务时间

(5)响应时间:从提交请求到产生响应所花费的总时间

 1.3调度算法

FCFS

特点:实现简单、公平

缺点:没考虑任务特性,周转时间(平均等待时间)可以提高

会计算平均周转时间:计算时,要先找到调度顺序,然后是每个进程的完成时间

FCFS与SJF 举例

SJF 

SJF(SPF)、   SRJF

是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。

优点:有最小的平均周转时间

缺点:不公平,可能出现进程饥饿,未考虑作业的紧迫程度,对长作业不利

RR

基于时间片的轮转调度算法是一种常见的CPU调度算法,它将CPU时间划分成一定大小的时间片,每个进程在该时间片内运行,然后轮转到下一个进程。如果一个进程不能在该时间片内完成任务,则将其放回就绪队列,等待下一个时间片重新运行

RR:按时间片来轮转调度

易于满足交互式任务

 

高优先级优先 

非抢占式优先权算法

 在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成; 或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。这种调度算法主要用于批处理系统中;

抢占式优先权调度算法

 在这种方式下,系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。 

如何确定优先级:

静态优先级:进程类型、对资源的需求、根据用户的特点

静态优先级问题是不公平

动态优先级:优先级动态调整,随着等待时间增长而不断增高

问题:算法开销

优先权算法例题

 多级队列调度

 

实现简单

多级反馈队列

结合上面算法优点,简单实用的算法

实时调度

FCFS、SJF(SPF)、   SRJF、RR会计算平均周转时间

 1.4死锁

死锁的概念:

多个进程因竞争资源而造成的一种相互等待的局面,若无外力作用,进程将无法向前推进

注意:僵局,是局部现象,可以传播

死锁产生的原因

(1)竞争资源:资源是不可被抢占的临界资源

(2)进程推进次序不当

死锁产生的必要条件

  • 互斥
  • 请求和保持
  • 不可抢占
  • 循环等待(出现了环)

处理方法

预防、避免、检测与接触、忽略

死锁的预防-破坏必要条件

1、互斥:不能破坏,资源的固有属性

2、请求和保持:比如:所需要的资源一次性全分配

3、不可抢占:允许抢占,会出现资源反复申请释放、推迟进程的执行

4、循环等待:对资源排序,只能按序申请资源。

死锁的避免 (银行家算法)

引入安全状态的概念。

安全状态:如果系统中的所有进程存在一个可使全部完成的执行序列P1,…Pn,则称系统处于安全状态。不存在这样的全部执行序列时就是不安全状态

安全状态一定没有死锁,不安全状态可能会产生死锁

 银行家算法

   设Requesti是进程Pi的请求向量,如果Requesti[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:      

 (1) 如果Requesti[j]≤Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。      

(2) 如果Requesti[j]≤Available[j],便转向步骤(3);否则, 表示尚无足够资源,Pi须等待。

 (3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:   Available[j]∶=Available[j]-Requesti[j];   Allocation[i,j]∶=Allocation[i,j]+Requesti[j];   Need[i,j]∶=Need[i,j]-Requesti[j];      

 (4) 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则, 将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。

  (2) P1请求资源:P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查:         ① Request1(1, 0, 2)≤Need1(1, 2, 2)        

② Request1(1, 0, 2)≤Available1(3, 3, 2)        

③ 系统先假定可为P1分配资源,并修改Available, Allocation1和Need1向量,由此形成的资源变化情况如图 3-15 中的圆括号所示。        

④ 再利用安全性算法检查此时系统是否安全。

死锁的检测与解除

资源分配图

理解资源分配图的顶点、边的含义,比如:进程节点、资源节点、分配边、请求边,孤立节点、阻塞节点(有请求边,但可用资源不够用的进程节点

2、资源分配图的简化:在资源分配图中找既不是阻塞也不是孤立的进程节点,可得到资源完成;完成后释放资源,即删除它的分配边和请求边,使成为孤立节点;重复为之,若能消去所有的边,所有节点都为孤立节点,则资源分配图为可完全简化的,反之为不可完全简化的。

3、死锁定理:死锁状态的充分条件,当且仅当该状态的资源分配图是不可完全简化的。

4、死锁的检测的解除(了解)

检测过程就是简化资源分配图,实现算法和银行家算法类似的,开销较大,有时候完全忽略死锁,不处理死锁。

二、习题

1.时间片轮转调度算法是为了()。
A.多个终端能够得到系统及时响应
B.使系统变得高效
C.优先级较高的进程得到及时响应
D.需要CPU时间最少的进程最先做.

答案:A。 时间片轮转调度算法是一种基于时间片的调度算法,其主要目的是保证多个终端用户能够得到系统及时响应,从而提高系统的交互性。当一个进程占用CPU的时间达到了限定的时间片长度后,便会被系统强制中断,然后放入后备队列,让其他进程继续执行。这种算法能够确保每个进程都能够及时获得CPU的执行时间,从而提高系统的效率和响应速度。

 2.下面有关选择进程调度算法的准则中不正确的是()。·
A.尽快响应交互式用户的请求
B.尽量提高处理器利用率
C.尽可能提高系统吞吐量
D.适当增长进程就绪队列的等待时间

D.适当增长进程就绪队列的等待时间是不正确的,因为进程等待时间越长,用户体验越差。正确的准则是尽可能减少进程等待时间并提高系统吞吐量

 3.设有4个作业同时到达,每个作业的执行时间均为2h,它们在一台处理器上按单道运行,则平均周转时间为()。。
A.1h
B.5h
C.2.5h
D.8h.

B5h。

假设这4个作业按照顺序分别为A、B、C、D。如果按照单道运行,那么每个作业都需要等待前一道作业执行完毕后才能开始执行。因此,作业A的等待时间为0,作业B的等待时间为2h,作业C的等待时间为4h,作业D的等待时间为6h。

则这4个作业的平均周转时间为为:

(2+4+6+8)/4=5h

4.若每个作业只能建立一个进程,为了照顾短作业用户,应采用(B):为了照顾紧急作业用户,应采用(E):为了能实现人机交互,应采用(C):而能使短作业.长作和交互作业用户都满意,应采用(D)。。
A.FCFS调度算法
B.短作业优先调度算法
C.时间片轮转调度算法
D.多级反馈队列调度算法
E.剥夺式优先级调度算法

答案:

A. FCFS调度算法只考虑作业的到达顺序,不能够照顾短作业用户。

B. 短作业优先调度算法可以照顾短作业用户,因为它优先调度执行时间短的作业。

C. 时间片轮转调度算法可以实现人机交互,因为它将CPU划分为时间片,每个进程轮流执行。

D. 多级反馈队列调度算法可以同时照顾短作业、长作业和交互作业用户,因为它将作业划分为多个队列,并根据作业的特点进行调度。

E. 剥夺式优先级调度算法只考虑优先级高的进程,不能照顾紧急作业用户。

因此,正确答案为B短作业优先调度算法照顾短作业用户,E剥夺式优先级调度算法照顾紧急作业用户,C时间片轮转调度算法实现人机交互,D多级反馈队列调度算法照顾短作业、长作业和交互作业用户。

5.设有三个作业,其运行时间分别是2h,5h,3h,假定它们同时到达,并在同一台处理器上以单道方式运行,则平均周转时间最小的执行顺序是()。·
A.J1,J2,J3
B.J3,J2,J1
C.J2,J1,J3
D.J1,J3,J2.

根据最短作业优先(SJF)调度算法,应该先运行运行时间短的作业。因此,执行顺序应该是J1,J3,J2,即选项D。

6.下列调度算法中,()调度算法是绝对可抢占的。
A.先来先服务
B.时间片轮转
C.优先级
D.短进程优先

答案:B. 时间片轮转。

解析:

先来先服务算法是非可抢占的,一旦进程开始运行就一直运行到结束,不会被其他进程抢占CPU资源。

优先级调度算法可以是可抢占的或非可抢占的,取决于是否存在更高优先级的进程需要运行。

短进程优先算法也是非可抢占的,一旦进程开始运行就一直运行到结束,不会被其他进程抢占CPU资源。

时间片轮转算法是绝对可抢占的,每个进程分配一个时间片运行,当时间片用完时,进程会被抢占,被放回就绪队列等待执行。

7.【2011年计算机联考真题】下列选项中,满足短作业优先且不会发生饥饿现
象的是()调度算法。
A.先来先服务
B.高响应比优先
C.时间片轮转
D.非抢占式短作业优先
 8.死锁的避免是根据()采取措施实现的。。
A.配置足够的系统资源
B.使进程的推进顺序合理。
C.破坏死锁的四个必要条件之一
D.防止系统进入不安全状态

AB与题意不符,C是预防

 8.某系统中有三个并发进程都需要四个同类资源,则该系统必然不会发生死锁
的最少资源是()。
A.9
B.10
C.11
D.12.

3个进程要想不死锁 每个进程都需要4个同类资源 所以。。 
只要每个进程都有3个资源 另外一个在给一个额外的资源。 那么3个进程中有一个可以运行。。运行完以后 释放资源然后其余的 进程在申请资源就可以了啊 。

9.采用资源剥夺法可以解除死锁,还可以采用()方法解除死锁。·
A.执行并行操作
B.撤销进程
C.拒绝分配新资源
D.修改信号量

资源剥夺法允许一个进程强行剥夺其他进程所占有的系统资源。而撤销进程是强行释放一个进程己占有的系统资源,与资源剥夺法同理,都是通过破坏死锁的“请求和保持”条件来解除死锁。拒绝分配新资源只能维持死锁的现状,无法解除死锁。

10.以下有关资源分配图的描述中正确的是()。~
A.有向边包括进程指向资源类的分配边和资源类指向进程申请边两类
B.矩形框表示进程,其中圆点表示申请同一类资源的各个进程
C.圆圈节点表示资源类
D.资源分配图是一个有向图,用于表示某时刻系统资源与进程之间的状态

在资源分配图中,用圆圈代表一个进程,用矩形框代表一类资源。由于一种类型的资源可能有多个,用矩形框中的一个点代表一类资源中的一个资源。从进程到资源的有向边叫请求边,表示该进程申请一个单位的该资源;从资源到进程的边叫分配边,表示该资源已经有一个被分配给了该进程。由上所述知D选项为正确答案。

11.死锁检测时检查的是()。·
A.资源有向图
B.前驱图
C.搜索树
D.安全图.

死锁检测一般采用两种方法:资源有向图法和资源矩阵法。前驱图只是说明进程之间的同步关系,搜索树用于数据结构的分析,安全图并不存在。

12.系统的资源分配图在下列情况中,无法判断是否处于死锁的情况有()。。
I.出现了环路
II.没有环路
III.每种资源只有一个,并出现环路
IV.每个进程节点至少有一条请求边
A.I、II、III、IV
B.I、III、IV
C.I、IV
D.以上答案都不正确

解析:

I:出现了环路,只是满足了循环等待的必要条件,但是并不能保证一定出现死锁。

II:没有环路,说明破坏了循环等待条件,所以一定不会发生死锁。

III:每种资源只有一个,又出现了环路,这是死锁的充分必要条件,所以,一定会有死锁的出现。

IV:每个进程至少有一条请求边的时候,如果资源充足,则不会发生死锁,但若资源不充足,就有发生死锁的可能。故只有I,IV可以确定是否产生死锁

13一个进程在获得资源后,只能在使用完资源后由自己释放,这属于死锁必要条件的()。
A.互斥条件
B.请求和痒放条件
C.不剥夺条件
D.防止系统进入不安全状态

14.某一个系统中,测得其处理机的利用率为1%,I/0的利用率为1%,就绪队列中
有进程两个,阻塞队列31个,我们判断,此时系统出现异常,有极大可能系统
中有进程()
A空闲
B饥饿
C死锁
D抖动.

C死锁。因为就绪队列中只有两个进程,阻塞队列中却有31个进程,这表明阻塞队列中的进程无法继续执行,可能是因为它们在等待某些资源被释放。这种情况很可能是死锁,即多个进程相互等待彼此所持有的资源,导致它们都无法继续执行。同时,系统中的处理机和I/O设备的利用率都很低,也说明进程无法正常执行,从而加剧了死锁的可能性。

15.银行家算法是一种死锁()的算法。·
A忽略
B检测与恢复

C避免
D预防.

16.资源的有序分配是一种死锁(1)的算法,他起到(2)作用。·
(1)A忽略B检测与恢复C避免D预防
(2)A提高系统利用率B自动处理故障C资源的合理利用.D打破循环等待条件

17.

记住这样一个知识点,你就知道怎么做了。

  1. 计算要占CPU
  2. I/O不占CPU
  3. 先出发的先执行
  4. 计算使用CPU可以与I/O一起进行,但是i/o操作不能并行

18.下列关于银行家算法的叙述中,正确的是
A.银行家算法可以预防死锁
B.当系统处于安全状态时,系统中一定无死锁进程
C.当系统处于不安全状态时,系统中一定会出现死锁进程
D.银行家算法破坏了死锁必要条件中的“请求和保持”条件

死锁的必要条件有:

1、互斥条件(任一时刻一个资源仅为一个进程独占)

2、占有且等待条件

3、不剥夺条件(任一进程不呢从其他资源处抢夺资源)

4、循环等待条件(存在一个循环等待链)

死锁的发生必定有上述四个条件的同时成立,同理,只要破坏四个条件中的任何一个就可预防死锁的发生

A-->“死锁的预防”是破坏四个必要条件的任何一个;“死锁的避免”是掌握系统中并发进程的状态和与这些进程有关的资源动态申请情况,做出合理选择,避免死锁的发生,“银行家算法”属于“死锁的避免”

C-->“不安全状态”并不一定导致死锁的发生

D-->“银行家算法”属于死锁的避免,没有破坏死锁发生的四个必要条件中的任何一个

 19.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烟雨平生9527

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

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

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

打赏作者

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

抵扣说明:

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

余额充值