当前位置:文档之家› 死锁与饥饿

死锁与饥饿

死锁与饥饿
死锁与饥饿

死锁与饥饿

第五章死锁与饥饿

学习指导:

死锁是操作系统的棘手问题,因为不存在处理

死锁的完美方法。从理论上来说,如果给定进程有关资源的命令序列,可以给出避免死锁的充分必要算法,尽管其开销很大(NP完全),但实际以序列形式给出的资源需求对于稍微复杂一点的程序都是不现实的。

本章介绍的预防、避免、检测与恢复策略,在大多数实际系统中并未采用,一方面因为开销,另一方面因为使用的方便性。

然而本章内容仍是重要的,尤其是死锁避免与

检测。包括安全状态与安全序列的定义和检查算

法、避免死锁的资源分配算法。读者应当认真区分死锁避免算法与死锁检测算法之间的本质差别,尽管这两个算法在结构上很相似,差别只在Need与Work的比较和Request与Work的比较。

饥饿与饿死反映了资源分配策略的不公平性,

应当从进程状态方面理解饥饿与死锁之间的差

习题解答:

1.下面关于死锁问题的叙述哪些是正确的,哪

些是错误的,说明原因。

(1)参与死锁的所有进程都占有资

源;

(2)参与死锁的所有进程中至少有两

个进程占有资源;

(3)死锁只发生在无关进程之间;

(4)死锁可发生在任意进程之间。

答:说法(1)是错误的,应该是参与死锁的所

有进程都等待资源。如下图所示,参与进程

pl、p2、p3、p4,尽管p3、p4不占有资源,但

也卷入死锁。

说法(2)正确。参与死锁的进程至少有两个,设为p1,p2,pl占有资源r1而等待资源

r2 , p2占有资源r2而等待资源r1。说法(3)

错误。死锁也可能发生在相关进程之间,如

pl和p2也可能是相关进程。

说法(4)正确,死锁既可能发生在相关进程之间,也可能发生在无关进程之间。即死锁

可发生在任意进程之间。

2.试证明当每个资源类中仅有一个资源实

例时,资源分配图中的环路是死锁的充要条

件。

证明:已知必要条件成立,即发生死锁必存

在环路,下面只需证明充分条件,即在每类资源仅有一个实例的前提下,环路意味着死锁。

假定环路上共有k个进程(k 2),设这k个进

程为p i, p2,…,P k。p i等待p2占有的资源r 1,p2 等待P3占有的资源门,…,pk等待pi占有的资源r k。显然,这k个资源类中的所有资源实例均被环路上的进程所占有,环路外的进程有关资源的任何释放动作必不涉及这k类资源,因而无法使环路上的等待进程解除等待状态,因而这k个进程将无限期地等待下去,即发生死锁。证毕。

3?什么叫饥饿?什么叫饿死?什么叫活锁?举例说明之.

答:在一个动态系统中,资源请求与释放是经

常性发生的进程行为。对于每类系统资源,操作系统需要确定一个分配策略,当多个进程同时申请某类资源时,由分配策略确定资源分配给进程的次序。资源分配策略可能是公平的(fair),能保证请求者在有限的时间内获得所需资源;资源分配策略也可能是不公平的(unfair),即不能保证等待时间上界的存在。在后一种情况下,即使系统没有发生死锁,某些进程也可能会长时间等待。当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿(starvation),当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死(starve to death。

考虑一台打印机分配的例子,当有多个进程需

要打印文件时,系统按照短文件优先的策略排序,该策略具有平均等待时间短的优点,似乎非常合理,但当短文件打印任务源源不断时,长文件的打印任务将被无限期地推迟,导致饥饿以至饿死。

与饥饿相关的另外一个概念称为活锁(live lock),在忙式等待条件下发生的饥饿,称为活锁。例如不公平的互斥算法。

4.死锁与饿死之间有何相同点和不同

占?

八\、?

答:饿死与死锁有一定联系:二者都是由于竞

争资源而引起的,但又有明显差别,主要表现在如下几个方面:

(1)从进程状态考虑,死锁进程都处于等待状态,忙式等待(处于运行或就绪状态)的进程并非处于等待状态,但却可能被饿死;

(2)死锁进程等待永远不会被释放的资源,饿死进程等待会被释放但却不会分配给自己的资

源,表现为等待时限没有上界(排队等待或忙式等

待);

(3)死锁一定发生了循环等待,而饿死则不然。这也表明通过资源分配图可以检测死锁存在与否,但却不能检测是否有进程饿死;

(4)死锁一定涉及多个进程,而饥饿或被饿死的进程可能只有一个。

饥饿和饿死与资源分配策略(policy)有关,因而防止饥饿与饿死可从公平性考虑,确保所有进程不被

忽视,如FCFS分配算法。

5.何谓银行家算法的保守性?举例说明之。答:银行家算法的保守性是指银行家算法只给出了进程需要资源的最大量,而所需资源的具体申请和释放顺序仍是未知的,因而银行家只能往最坏处设想.

考虑资源集合R={A(1),B(1)},进程集合P={P1,R},已知进程P1和进程P2的活动序列分别为:p i: a,b 更,b; p2:b,b,b,a,b,a。显然p i 和P2的资源最大需求量均为A(1), B(1)。假定某时刻系统状态如下:

Claim Allocation

Need Availa ible

A B A B

A B A B

P1: 1 110 0 101

p2: 1 100 1 1

到的命令有两种可能,一是p i的请求b, 一是p2 的请求b。假定为P2的请求b ,因Request[2]=(0,1)匸Need[2]=(1,1),故该请求是合法

的。又

Request[2]=(0,1)三Available=(0,1),故该请求系统当前能够满足。假定分配,系统状态变化如下:

Claim Allocation Need Availal ble

A B A B A B A B

P i: 1 110 0 100

P2: 1 101 1 0

运行安全性检测算法发现此时系统处于不安

全状态,因而取消分配,P2等待。实际上如果真正实施分配系统并不会进入死锁状态,因为分配后按照p2( b ), p i(b), p i( a ), p i( b ), P2 (b), p2(a), p2(b), p2(a)的次序两个进程可以执行完,这是一

个p1和p2交叉执行的次序,而不

是一个顺序执行的次序,银行家算法不能判断。

6. 能否给出避免死锁的充要性算法?为什么?

答:目前关于避免死锁的算法,如银行家算法 是充分性算法,即确保系统时刻处于安全状态, 这是在系统已知每个进程所需资源最大量的条 件下可以给出的最好结果。

如果系统不仅知道每个进程所需资源的最大 量,而且知道进程有关资源的活动序列, 在这个 更强的条件下,则可以给出避免死锁的充要性算 法(读者可以证明),但其复杂度是很高(NP 完 全)的。而且由于程序中分支和循环的存在,事 先给出进程有关资源的命令序列一般是不可能 的。

7. 设有一个T 型路口,其中 A 、B 、C 、 D 处

各可容纳一辆车,车行方向如下图所 示,试找出死锁并用有序分配法消除之。 要 求资源编号合理。

S:

左 转

解:(1) E 方向两台车分别位于 A 和B ; S 方

A :

B ? E :左转

W :直行 D

C

向一台车位于C ; W 方向一台车位于D 。(2) S 方向两台车分别位于 B 和C; E 方向一台车位于 A ; W 方向一台车位于D 。

设位置资源C 、B 、A 、D 的编号从低到高 依次为1、2、3、4,管理四个位置的信号量分 别为

s1,s2,s3,s4信号量的初值均为1。车辆活 动如下:

semaphore s1=1,s2=1,s3=1,s4=1;

V(s4);

V(S2) V(S1) 驶岀C;

P(s4);

P(s3);

V(s1); 驶入D; 驶入A;

V(s3);

V(s2);

驶岀D;

驶岀A;

V(s4);

8. 设系统中仅有一个资源类,其中共有 M 个资源实例,使用此类资源的进程个数共 有N 个,它们所需资源最大量总和为 「试 证明

发生死锁的必要条件是-M +N 。

证明:假定发生死锁,且参与死锁的进程个 数为n (2 ±n -N),参与死锁的n 个进程已经占有 系统中全部M 个资源实例,而还没够(因它们处 于无限期等待状态),每个进程至少还需要一个 资源实

P (s1); //按序申请 P(s2);

P(s1);

P(s4); 驶入B;

驶入C;

驶入D;

P(s3);

P(s2);

驶入C;

驶入A;

驶入B;

W :直行

E :左转 S:左转 V(s3);

例,因而参与死锁进程所需要资源总量

M + n。

每个未参与死锁进程至少需要一个资源实例(若不需要则不属于N集合中,它们没有参与死锁是因为它们在得到并使用完资源后已经将其释放),由于共有N-n个未参与死锁的进程,它们所需资源总量-N-n。

由此可知,全部进程所需要的资源总量

-(M +n)+( N - n)= M+N。

9.在银行家算法中,若出现如下资源分配

情况:

Allocation Need Available

A B C D A B C D A B C D

P0: 0 0 3 2 0 0 1

2 1 6 2 3

P1: 1 0 0 0 1 7 5

P2: 1 3 5 4 2 3 5

6

P3: 0 3 3 2 0 6 5

2

P4: 0 0 1 4 0 6 5

6

试问:(1)当前状态是否安全?

(2)如果进程P2提出安全请求Request 2] =( 1,2,2,2),系统能否将资源分配给它?说明原因.

解:(1)当前状态是安全状态。

运行安全性检查算法如下:

1) Work = Available; Finish = false;

2)寻找满足如下条件的i:

Finish[ i]== false 并且Need[ i] < Work[ i];

如果不存在,则转步骤4);

3) Work = Work + Allocation] i] ;

Finish[ i] =true;

转步骤2)

4)如果对于所有i, Finish] i] = true, 则系

统处于安全状态,否则处于不安全状 ^态。

令Work = Available=( 1, 6, 2, 3)

运行安全性检测算法,Finish[0]=false并且Need[0]=(0 0 1 2)

则Work = Work + Allocation[0]=( 1, 6, 2, 3) + (0, 0, 3, 2)= ( 1, 6, 5, 5); Finish[0] = true;

Finish[3]=false 并且Need[3]=( 0, 6, 5, 2)

则Work = Work + Allocation[3]=( 1, 6, 5, 5)

+(0, 3, 3, 2)=( 1, 9, 8, 7);Finish[3] = true;

Finish[4]=false 并且Need[4=( 0, 6, 5, 6)

则Work = Work + Allocation[4]=( 1, 9, 8, 7) + ( 0, 0, 1, 4)= ( 1, 9, 9, 11);Finish[4] = true;

Finish[1]=false 并且Need[1]=( 1, 7, 5, 0)

则Work = Work + Allocation[4]=( 1, 9, 9, 11) +(1, 0, 0, 0 )=(2, 9, 9, 11); Finish[1] = true;

Finish[2]=false 并且Need[2]= (2, 3, 5, 6) vWork,

则Work = Work + Allocation[4]= (2, 9, 9, 11) + (1, 3, 5, 4 ) =(3, 12, 14, 15); Finish[2] = true;

可以找到一个安全进程序列 , 它使Finish[i]=true,对于所有O W i<4,因而可以断言系统当前处于安全状态.

(2)运行银行家算法,由于Request[2]= (1, 2, 2, 2)Need[2]= (2, 3, 5, 6),因而请求合法。进一步,Request[2]= (1, 2, 2, 2) - Available= (1, 6, 2, 3),故该请求是可以满足的。假设将资源分配给p2,则系统状态变为:

Allocation _____ Need Available

A B C D A B C D

A B C D

P0: 0 0 3 2 0 0 1

2 0 4 0 1

P1: 1 0 0 0 1 7 5

P3: 0 3 3 2 0 6 5

2

P4: 0 0 1 4 0 6 5

6

运行安全性检测算法,Work=Available= (0, 4, 0, 1), Finish[i]=false,此时所有Need[ip Work[i] 均不成立,结果Finish[i]均为false,不存在安全进程序列,系统处于不安全状态。系统将取消资源分配并恢复原来状态,进程p2等待。

10.某系统

采用死锁检测手段发现死锁,设系统中资源类集合为{A,B,C},资源类A中共有8个实例,资源类B中共有6个实例,资源类C中共有5个实例?又设系统中进程集合为

{p1,p2,p3,p4,p5,p6},某时刻系统状态如下:

Allocation

Available ABC B C

Request

p1:

C A

0 2 2

p2:1

32100

p3:01220 2

p4:00000 0

P5:21003 1

p6:00100 0

(1)在上述状态下系统依次接受如下请求:

Request[1]=(1,0,0); Request[2]=(2,1,0);

Request[4]=(0,0,2)。给出系统状态变化情

况,并说明没有死锁。

⑵在由⑴所确定的状态下系统接收如下请

求:Request[1]=(0,3,1),说明此时已发生死

锁,并找出参与死锁的进程。

解:(1)①如果系统只是接受请求,但是没有

分配资源给进程,那么系统状态变为:

Allocation

C A B C

p1:10010 0 2 21

p2:32121 0

p3:01220 2

p4:00000 2

p5:21003 1

p6:00100 0

在该状态下运行死锁检测算法,可以找到一个

进程序列Vp4,p i,p2,p3,p5,p6>,它使Finish[i]=true, 对于所有K i< 6,因而可以断言系统当前没有进入死锁状态。

②如果系统接受请求后,将一个A分配给进程

p i,则系统状态变为:

Allocation

C A B C

p1:20000 0 1 21

p2:32121 0

p3:01220 2

p4:00000 2

p5:21003 1

p6:00100 0

在该状态下运行死锁检测算法,可以找到一个

进程序列Vp4,p i,p2,p3,p5,p6>,它使Finish[i]=true,

对于所有K i< 6,因而可以断言系统当前没有进入

死锁状态。

(2)设在(1)的①状态下系统接收如下请求:Request[1]=(0,3,1),则系统状态变为:

Allocation

C A B C

p1:10013 1 2 21

p2:32121 0

p3:01220 2

p4:00000 2

p5:21003 1

p6:00100 0

在该状态下运行死锁检测算法,可以找到一个

进程序列Vp4,p2,p3,p5,p6,p i>,它使Finish[i]=true, 对于所有K i< 6,因而可以断言系统当前没有进入死锁状态.

设在(1)的②状态下系统接收如下请求:

Request[1]=(0,3,1),则系统状态变为:

Allocation

C A B C

p1:20003 1 1 21

p2:32121 0

P3:01220 2

p4:00000 2

p5:21003 1

p6:00100 0

在该状态下运行死锁检测算法,找不到一个

进程序列使Finish[i]=true ,对于所有K i < 6,因为存在i € {1 , 2 , 3 , 5},使Fini sh[i]=false ,因而可以断言系统已经进入死锁状态,进程p i, p2, p s, p s卷入死锁.

11.设有7个简单资源:A B、C D、

E、F、G 其申请命令分别为a、b、c、d、

第3章死锁习题及答案

第三章死锁习题 一、填空题 1.进程的“同步”和“互斥”反映了进程间①和②的关系。 【答案】①直接制约、②间接制约 【解析】进程的同步是指在异步环境下的并发进程因直接制约而互相发送消息,进行相互合作、相互等待,使得各进程按一定的速度执行的过程;而进程的互斥是由并发进程同时共享公有资源而造成的对并发进程执行速度的间接制约。 2.死锁产生的原因是①和②。 【答案】①系统资源不足、②进程推进路径非法 【解析】死锁产生的根本原因是系统的资源不足而引发了并发进程之间的资源竞争。由于资源总是有限的,我们不可能为所有要求资源的进程无限地提供资源。而另一个原因是操作系统应用的动态分配系统各种资源的策略不当,造成并发进程联合推进的路径进入进程相互封锁的危险区。所以,采用适当的资源分配算法,来达到消除死锁的目的是操作系统主要研究的课题之一。 3.产生死锁的四个必要条件是①、②、③、④。 【答案】①互斥条件、②非抢占条件、③占有且等待资源条件、④循环等待条件 【解析】 互斥条件:进程对它所需的资源进行排它性控制,即在一段时间内,某资源为一进程所独占。 非抢占条件:进程所获得的资源在未使用完毕之前,不能被其它进程强行夺走,即只能由获得资源的进程自己释放。 占有且等待资源条件:进程每次申请它所需的一部分资源,在等待新资源的同时,继续占有已分配到的资源, 循环等待条件:存在一进程循环链,链中每一个进程已获得的资源同时被下一个进程所请求。 4.在操作系统中,信号量是表示①的物理实体,它是一个与②有关的整型变量,其值仅能由③原语来改变。 【答案】①资源,②队列,③P-V 【解析】信号量的概念和P-V原语是荷兰科学家E.W.Dijkstra提出来的。信号量是一个特殊的整型量,它与一个初始状态为空的队列相联系。信号量代表了资源的实体,操作系统利用它的状态对并发进程共享资源进行管理。信号量的值只能由P-V原语来改变。 5.每执行一次P原语,信号量的数值S减1。如果S>=0,该进程①;若S<0,则②该进程,并把它插入该③对应的④队列中。 【答案】①继续执行,②阻塞(等待),③信号量,④阻塞(等待) 【解析】从物理概念上讲,S>0时的数值表示某类资源可用的数量。执行一次P原语,意味着请求分配一个单位的资源,因此描述为S=S-1。当S<0时,表示已无资源,这时请求资源的进程将被阻塞,把它排在信号量S的等待队列中。此时,S的绝对值等于信号量队列上的阻塞的进程数目。 6.每执行一次V原语,信号量的数值S加1。如果①,Q进程继续执行;如果S<=0,则从对应的②队列中移出一个进程R,该进程状态变为③。 【答案】①S>0,②等待,③就绪 【解析】执行一次V原语,意味着释放一个单位的资源。因此,描述为S=S+1。当S<0时,表示信号量请求队列中仍然有因请求该资源而被阻塞的进程。因此,应将信号量对应的阻塞队列中的第一个进程唤醒,使之转至就绪队列。 7.利用信号量实现进程的①,应为临界区设置一个信号量mutex。其初值为②,表示该资源尚未使用,临界区应置于③和④原语之间。

操作系统精髓与设计原理-第6章 并发性_死锁和饥饿

第六章习题翻译 第一部分复习题 6.1给出可重用资源和可消费资源的例子。 答:可重用资源:处理器,I/O通道,主存和辅存,设备以及诸如文件,数据库和信号量之类的数据结构。 可消费资源:中断,信号,消息和I/O缓冲区中的信息。 6.2可能发生死锁所必须的三个条件是什么? 答:互斥,占有且等待,非抢占。 6.3产生死锁的第4个条件是什么? 答:循环等待。 6.4如何防止占有且等待的条件? 答:可以要求进程一次性地请求所有需要的资源,并且阻塞这个资源直到所有请求都同时满足。 6.5给出防止无抢占条件的两种方法。 答:第一种,如果占有某些资源的一个进程进行进一步资源请求被拒绝,则该进程必须释放它最初占用的资源,如果有必要,可再次请求这些资源和另外的资源。 第二种,如果一个进程请求当前被另一个进程占有的一个资源,则操作系统可以抢占另一个进程,要求它释放资源。 6.6如何防止循环等待条件? 答:可以通过定义资源类型的线性顺序来预防。如果一个进程已经分配到了R类型的资源,那么它接下来请求的资源只能是那些排在R类型之后的资源类型。6.7死锁避免,检测和预防之间的区别是什么? 答:死锁预防是通过间接地限制三种死锁必要条件的至少一个或是直接地限制循环等待的发生来避免死锁的出现。死锁避免允许可能出现的必要条件发生,但是采取措施确保不会出现死锁的情况。而死锁检测允许资源的自由分配,采取周期性的措施来发现并处理可能存在的死锁情况。 第二部分习题 6.1写出图6.1(a)中死锁的四个条件。 解:互斥:同一时刻只有一辆车可以占有一个十字路口象限。占有且等待:没有车可以倒退;在十字路口的每辆车都要等待直到它前面的象限是空的。非抢占: 没有汽车被允许挤开其他车辆。循环等待: 每辆汽车都在等待一个此时已经被其他车占领的十字路口象限。 6.2按照6.1节中对图6.2中路径的描述,给出对图6.3中6种路径的简单描述。 解:1.Q 获得 B 和A, 然后释放 B 和 A. 当 P 重新开始执行的时候, 它将会能够获得两个资源。 2. Q 获得 B和A, P 执行而且阻塞在对 A的请求上. Q释放 B 和A。当 P 重新开始执行的时候,它将会能够获得两个资源。 3. Q 获得 B ,然后 P 获得和释放 A. Q 获得A然后释放 B 和 A. 当 P 重新开始行的时候,它将会能够获得 B。 4. P 获得A然后 Q 获得 B. P 释放 A. Q 获得A然后释放

死锁与饥饿

死锁与饥饿 第五章死锁与饥饿 学习指导: 死锁是操作系统的棘手问题,因为不存在处理 死锁的完美方法。从理论上来说,如果给定进程有关资源的命令序列,可以给出避免死锁的充分必要算法,尽管其开销很大(NP完全),但实际以序列形式给出的资源需求对于稍微复杂一点的程序都是不现实的。 本章介绍的预防、避免、检测与恢复策略,在大多数实际系统中并未采用,一方面因为开销,另一方面因为使用的方便性。 然而本章内容仍是重要的,尤其是死锁避免与 检测。包括安全状态与安全序列的定义和检查算

法、避免死锁的资源分配算法。读者应当认真区分死锁避免算法与死锁检测算法之间的本质差别,尽管这两个算法在结构上很相似,差别只在Need与Work的比较和Request与Work的比较。 饥饿与饿死反映了资源分配策略的不公平性, 应当从进程状态方面理解饥饿与死锁之间的差 习题解答: 1.下面关于死锁问题的叙述哪些是正确的,哪 些是错误的,说明原因。 (1)参与死锁的所有进程都占有资 源; (2)参与死锁的所有进程中至少有两 个进程占有资源; (3)死锁只发生在无关进程之间; (4)死锁可发生在任意进程之间。 答:说法(1)是错误的,应该是参与死锁的所 有进程都等待资源。如下图所示,参与进程 pl、p2、p3、p4,尽管p3、p4不占有资源,但 也卷入死锁。

说法(2)正确。参与死锁的进程至少有两个,设为p1,p2,pl占有资源r1而等待资源 r2 , p2占有资源r2而等待资源r1。说法(3) 错误。死锁也可能发生在相关进程之间,如 pl和p2也可能是相关进程。 说法(4)正确,死锁既可能发生在相关进程之间,也可能发生在无关进程之间。即死锁 可发生在任意进程之间。 2.试证明当每个资源类中仅有一个资源实 例时,资源分配图中的环路是死锁的充要条 件。 证明:已知必要条件成立,即发生死锁必存 在环路,下面只需证明充分条件,即在每类资源仅有一个实例的前提下,环路意味着死锁。 假定环路上共有k个进程(k 2),设这k个进

第2章 调度与死锁自测题

4.4 调度与死锁自测题 4.4.1 基本题 一、判断题(正确的在括号中记√,错误的记×) 1.死锁就是循环等待。 ( ) 2.最适合分时系统的进程调度算法是优先数法。() 3.不存在只涉及一个进程的死锁。 ( ) 4. 在分时系统中当用户数一定时,影响响应时间的主要因素是调度算法。( ) 5.若系统中每一资源类只有一个,只要系统存在任何环路,系统状态就是不安全的。 ( ) 6.多级反馈调度算法属于抢占调度方式。() 7.死锁是多个进程为竞争系统资源或彼此间通信而引起的一种临时性的阻塞现象。 ( ) 8.在引入线程的系统中进程程调度负责CPU的分配工作。() 9.当进程数大于资源数时,进程竞争资源一定会产生死锁。() 10.实时调度的关键是保证满足实时任务对截止时间的要求。() 1. Χ 2. Χ 3.√ 4. Χ 5.√ 6. √ 7. Χ 8. Χ 9. Χ 10. √ 二、选择题 1.在三种基本类型的操作系统中,都设置了进程调度,在批处理系统中还应设置______调度。 A.作业 B.进程 C.中级 D.多处理机 2.下列算法中,_______只能采用非抢占调度方式。 A.高优先权优先法 B.时间片轮转法 C.FCFS调度算法 D.短作业优先算法 3.下面关于优先权大小的论述中,正确的论述是_____________。 A.计算型作业的优先权,应高于I/O型作业的优先权。 B.用户进程的优先权,应高于系统进程的优先权。 C.资源要求多的作业,其优先权应高于资源要求少的作业。 D.在动态优先权时,随着进程执行时间的增加,其优先权降低。 4.最适合分时系统的进程调度算法是______。 A、FCFS B、SSJF C、优先数法 D、轮转法 5.在分时系统中当用户数一定时,影响响应时间的主要因素是_____。 A、时间片 B、调度算法 C、存储分配方式 D、作业的大小 6.采用“按序分配”策略,可以破坏死锁产生的条件是______。 A、互斥 B、请求和保持 C、非剥夺 D、环路等待 7.下述解决死锁的方法中,属于死锁预防策略的是____________。 A.银行家算法 B.资源有序分配法 C.资源分配图化简法 D.撤消进程法 8.从下面关于安全状态和非安全状态的论述中,正确的论述是________。 A.安全状态是没有死锁的状态,非去全状态是有死锁的状态。 B.安全状态是可能有死锁的状态,非安全状态也是可能有死锁的状态。 C.安全状态是可能没有死锁的状态,非安全状态是有死锁的状态。 D.安全状态是没有死锁的状态,非安全状态是可能有死锁的状态。 9.关于产生死锁的现象,下面的描述最准确是__________。 A.每个进程共享某一个资源 B.每个进程竞争某一个资源 C.每个进程等待着某一个不能得到且不可释放的资源

线程死锁

主线程A等待另一个线程B的完成才能继续,在线程B中又要更新主线程A的界面,这里涉及了同步问题以及由此可能产生的死锁问题,同步问题在修改后的文章中讲得比较清楚了,对于线程之间可能产生死锁的浅析如下: 在等待线程B中更新主线程A的界面,如果未能正确处理A,B两线程同步的问题,极有可能导致两线程间的死锁 C#线程同步与死锁 在上一讲介绍了使用lock来实现C#线程同步。实际上,这个lock是C#的一个障眼法,在C#编译器编译lock语句时,将其编译成了调用Monitor类。先看看下面的C#源代码: 1.public static void MyLock() 2.{ 3.lock (typeof(Program)) 4. { 5. } 6.} 7. 上面的代码通过lock语句使MyLock同步,这个方法被编译成IL后,代码如图1所示。

图1 从上图被标注的区域可以看到,一条lock语句被编译成了调用Monitor的Enter和Exit方法。Monitor 在System.Threading命名空间中。lock的功能就相当于直接调用Monitor的Entry方法,所不同的是,lock方法在结束后,会自动解除锁定,当然,在IL中是调用了Monitor的Exit方法,但在C#程序中,看起来是自动解锁的,这类似于C#中的using语句,可以自动释放数据库等的资源。但如果直接在C#源程序中使用Monitor类,就必须调用Exit方法来显式地解除锁定。如下面的代码所示: 1.Monitor.Entry(lockObj); 2.try 3.{ 4.// lockObj的同布区 5.} 6.catch(Exception e) 7.{ 8.// 异常处理代码 9.} 10.finally 11.{ 12. Monitor.Exit(lockObj); // 解除锁定

进程调度与死锁部分练习题

第三章进程调度与死锁练习题 (一)单项选择题 1.为了根据进程的紧迫性做进程调度,应采用(B )。 A.先来先服务调度算法 B. 优先数调度算法 C.时间片轮转调度法 D.分级调度算法 2.采用时间片轮转法调度是为了( A)。 A.多个终端都能得到系统的及时响应 B.先来先服务 C. 优先数高的进程先使用处理器 D.紧急事件优先处理 3.采用优先数调度算法时,对那些具有相同优先数的进程再按( A )的次序分配处理器。 A 先来先服务 B. 时间片轮转 C. 运行时间长短 D.使用外围设备多少 4. 当一进程运行时,系统强行将其撤下,让另一个更高优先数的进程占用处理器,这种调度方式是( B )。 A. 非抢占方式 B.抢占方式 C. 中断方式 D.查询方式 5.( B)必定会引起进程切换。 A.一个进程被创建后进入就绪态 B.一个进程从运行态变成阻塞态 C.一个进程从阻塞态变成就绪态 6.( B)只考虑用户估计的计算机时间,可能使计算时间长的作业等待太久。 A.先来先服务算法 B.计算时间短的作业优先算法 C.响应比最高者优先算法 D.优先数算法 7.先来先服务算法以( A )去选作业,可能会使计算时间短的作业等待时间过长。A.进入的先后次序 B.计算时间的长短 C.响应比的高低 D.优先数的大小8.可以证明,采用( C )能使平均等待时间最小。 A.优先数调度算法 B.均衡调度算法 C.计算时间短的作业优先算法 D.响应比最高者优先算法

9.在进行作业调度时.要想兼顾作业等待时间和计算时间,应选取(D )。 A均衡调度算法 B.优先数调度算法 C.先来先服务算法 D.响应比最高者优先算法 10.作业调度算法提到的响应比是指( B )。 A.作业计算时间与等待时间之比 B.作业等待时间与计算时间之比 C.系统调度时间与作业等待时间之比 D.作业等待时间与系统调度时间之比 11.作业调度选择一个作业装入主存后,该作业能否占用处理器必须由( D )来决定。 A.设备管理 B.作业控制 C.驱动调度 D.进程调度 12.系统出现死锁的根本原因是( D )。 A.作业调度不当 B.系统中进程太多 C.资源的独占性 D.资源竞争和进程推进顺序都不得当 13.死锁的防止是根据( C )采取措施实现的。 A.配置足够的系统资源 B.使进程的推进顺序合理 C.破坏产生死锁的四个必要条件之一 D.防止系统进入不安全状态 14.采用按序分配资源的策略可以防止死锁.这是利用了使( B)条件不成立。 A.互斥使用资源 B.循环等待资源 C.不可抢夺资源 D.占有并等待资源 15.可抢夺的资源分配策略可预防死锁,但它只适用于(D )。 A.打印机 B.磁带机 C.绘图仪 D.主存空间和处理器 16.进程调度算法中的( A )属于抢夺式的分配处理器的策略。 A.时间片轮转算法 B.非抢占式优先数算法 C.先来先服务算法 D.分级调度算法 17.用银行家算法避免死锁时,检测到(C )时才分配资源。 A.进程首次申请资源时对资源的最大需求量超过系统现存的资源量 B.进程己占用的资源数与本次申请资源数之和超过对资源的最大需求量

《操作系统原理》5资源管理(死锁)习题

第五章死锁练习题 (一)单项选择题 1.系统出现死锁的根本原因是( )。 A.作业调度不当B.系统中进程太多C.资源的独占性D.资源管理和进程推进顺序都不得当 2.死锁的防止是根据( )采取措施实现的。 A.配置足够的系统资源B.使进程的推进顺序合理 C.破坏产生死锁的四个必要条件之一D.防止系统进入不安全状态 3.采用按序分配资源的策略可以防止死锁.这是利用了使( )条件不成立。 A.互斥使用资源B循环等待资源C.不可抢夺资源D.占有并等待资源 4.可抢夺的资源分配策略可预防死锁,但它只适用于( )。 A.打印机B.磁带机C.绘图仪D.主存空间和处理器 5.进程调度算法中的( )属于抢夺式的分配处理器的策略。 A.时间片轮转算法B.非抢占式优先数算法C.先来先服务算法D.分级调度算法 6.用银行家算法避免死锁时,检测到( )时才分配资源。 A.进程首次申请资源时对资源的最大需求量超过系统现存的资源量 B.进程己占用的资源数与本次申请资源数之和超过对资源的最大需求量 C.进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足尚需的最大资源量 D进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足本次申请量,但不能满足尚需的最大资源量 7.实际的操作系统要兼顾资源的使用效率和安全可靠,对资源的分配策略,往往采用( )策略。 A死锁的防止B.死锁的避免C.死锁的检测D.死锁的防止、避免和检测的混合 (二)填空题 1.若系统中存在一种进程,它们中的每一个进程都占有了某种资源而又都在等待其中另一个进程所占用的资源。这种等待永远不能结束,则说明出现了______。 2.如果操作系统对______或没有顾及进程______可能出现的情况,则就可能形成死锁。 3.系统出现死锁的四个必要条件是:互斥使用资源,______,不可抢夺资源和______。 4.如果进程申请一个某类资源时,可以把该类资源中的任意一个空闲资源分配给进程,则说该类资源中的所有资源是______。 5.如果资源分配图中无环路,则系统中______发生。 6.为了防止死锁的发生,只要采用分配策略使四个必要条件中的______。 7.使占有并等待资源的条件不成立而防止死锁常用两种方法:______和______. 8静态分配资源也称______,要求每—个进程在______就申请它需要的全部资源。 9.释放已占资源的分配策略是仅当进程______时才允许它去申请资源。 10.抢夺式分配资源约定,如果一个进程已经占有了某些资源又要申请新资源,而新资源不能满足必须等待时、系统可以______该进程已占有的资源。 11.目前抢夺式的分配策略只适用于______和______。 12.对资源采用______的策略可以使循环等待资源的条件不成立。 13.如果操作系统能保证所有的进程在有限的时间内得到需要的全部资源,则称系统处于______。14.只要能保持系统处于安全状态就可______的发生。 15.______是一种古典的安全状态测试方法。 16.要实现______,只要当进程提出资源申请时,系统动态测试资源分配情况,仅当能确保系统安全时才把资源分配给进程。

操作系统死锁习题集

死锁习题 一、填空题 2.死锁产生的原因是。 3.产生死锁的四个必要条件是、、、。 二、单项选择题 1.两个进程争夺同一个资源。 (A)一定死锁(B)不一定死锁 (C)不死锁(D)以上说法都不对 4.如果发现系统有的进程队

列就说明系统有可能发生死锁了。 (A)互斥(B)可剥夺 (C)循环等待(D)同步 5.预先静态分配法是通过破坏条件,来达到预防死锁目的的。 (A)互斥使用资源/循环等待资源 (B)非抢占式分配/互斥使用资源 (C) 占有且等待资源/循环等待资源 (D)循环等待资源/互斥使用资源 7.下列关于死锁的说法中,正确的是? 1)有环必死锁; 2)死锁必有环; 3)有环无死锁; 4)死锁也无环 8.资源有序分配法的目的是? 1)死锁预防; 2)死锁避免; 3)死锁检测; 4)死锁解除 8.死锁的预防方法中,不太可能的一种方法使()。

A 摈弃互斥条件 B 摈弃请求和保持条件 C 摈弃不剥夺条件 D 摈弃环路等待条件 10. 资源的按序分配策略可以破坏()条件。 A 互斥使用资源 B 占有且等待资源 C 不可剥夺资源 D 环路等待资源 三、多项选择题 1.造成死锁的原因是_________。 (A)内存容量太小(B)系统进程数量太多,系统资源分配不当 (C)CPU速度太慢(D)进程推进顺序不合适 (E)外存容量太小 2.下列叙述正确的是_________。 (A)对临界资源应采取互斥访问方式来实现共享 (B)进程的并发执行会破坏程序的“封

闭性” (C)进程的并发执行会破坏程序的“可再现性” (D)进程的并发执行就是多个进程同时占有CPU (E)系统死锁就是程序处于死循环3.通常不采用_________方法来解除死锁。 (A)终止一个死锁进程(B)终止所有死锁进程 (C)从死锁进程处抢夺资源(D)从非死锁进程处抢夺资源 (E)终止系统所有进程 5.通常使用的死锁防止策略有_________。 (A)动态分配资源(B)静态分配资源 (C)按序分配资源(D)非剥夺式分配资源 (E)剥夺式分配资源 四、名词解释 1死锁

第三章处理机调度与死锁 (2)

考点一调度的基本概念和基本准则 一、单项选择题 1.假设就绪队列中有10个进程,系统将时间片设为200ms,CPU进行进程切换要花费10ms。则系统开销所占的比率约为()。 A.1% B.5% C.10% D.20% 2.下面关于进程的叙述不正确的是()。 A.进程申请CPU得不到满足时,其状态变为就绪状态 B.在单CUP系统中,任一时刻有一个进程处于运行状态 C.优先级是进行进程调度的重要证据,一旦确定不能改变 D.进程获得处理机而运行的是通过调度实现的 二、综合应用题 1.分析调度的三种形式:短期调度、中期调度和长期调度的差别。 2.引起进程调度的原因有哪些? 3.高级调度与低级调度的主要任务是什么?为什么要引入中级调度? 4.选择调度方式和调度算法时,应遵循的准则是什么? 5.下列问题应由哪一些调度程序负责? (1)发生时间片中断后,决定将处理机分给哪一个就绪进程? (2)在短期繁重负荷情况下,应将哪个进程挂起? (3)一个作业运行结束后,从后备作业队列中选具备能够装入内存的作业。 6.CPU调度算法决定了进程执行的顺序。若有n 个进程需要调度,有多少种可能的调度算法顺序? 7.有些系统如MS-DOS没有提供并发处理手段。引入并发处理会导致操作系统设计的复杂性。试分析引入并发处理后导致的操作系统设计的三个主要的复杂性。 8.说明抢占式调度与非抢占式调度的区别。为什么说计算中心不适合采用非抢占式调度? 考点二典型调度算法 一、单项选择题 1.以下哪一种说法对剥夺式系统来讲结论正确()。 A.若系统采用轮转法调度进程,则系统采用的是剥夺式调度。 B.若现行进程要等待某一事件时引起调度,则该系统是剥夺式调度。 C.实时系统通常采用剥夺式调度。 D.在剥夺式系统中,进程的周转时间较之非剥夺式系统可预见。 2.既考虑作业的等待时间又考虑作业的执行时间的调度算法是()。 A.相应比高者优先 B.端作业优先 C.优先级调度 D.先来先服务 3.关于作业优先权大小的论述中,正确的论述是()。 A.计算型作业的优先级,应高于I/O型作业的优先权。 B.用户进程的优先权,应高于系统进程的优先权。 C.长作业的优先权,应高于短作业的优先权。 D.资源要求多的作业,其优先权应高于资源要求少的作业。 E.在动态优先权中,随着作业等待时间的增加,其优先权将随之下降。 F.在动态优先权中,随着进程执行时间的增加,其优先权降低。 二、综合应用题 1.设有一组进程,它们需要占用CPU的时间及优先级如下所示:

操作系统第五章复习资料

第五章设备管理 1、试说明设备控制器的组成。P163 答:设备控制器的组成由设置控制器与处理机的接口;设备控制器与设备的接口;I/O 逻辑。 2、为了实现CPU与设备控制器间的通信,设备控制器应具备哪些功能?P162-P163 答:基本功能:接收和识别命令;数据交换;标识和报告设备的状态;地址识别;数据缓冲;差错控制。 3、什么是字节多路通道?什么是数组选择通道和数组多路通道?P164-P165 答:1、字节多路通道:这是一种按字节交叉方式工作的通道。它通常都含有许多非分配型子通道,其数量可从几十到数百个,每个子通道连接一台I/O 设备,并控制该设备的I/O 操作。这些子通道按时间片轮转方式共享主通道。只要字节多路通道扫描每个子通道的速率足够快,而连接到子通道上的设备的速率不是太高时,便不致丢失信息。2、数组选择通道:字节多路通道不适于连接高速设备,这推动了按数组方式进行数据传送的数组选择通道的形成。3、数组多路通道:数组选择通道虽有很高的传输速率,但它却每次只允许一个设备数据。数组多路通道是将数组选择通道传输速率高和字节多路通道能使各子通道(设备)分时并行操作的优点相结合而形成的一种新通道。它含有多个非分配型子通道,因而这种通道既具有很多高的数据传输速率,又能获得令人满意的通道利用率。 4、如何解决因通道不足而产生的瓶颈问题?P166 答:解决“瓶颈”问题的最有效的方法,便是增加设备到主机间的通路而不增加通道,就是把一个设备连接到多个控制器上,而一个控制器又连接到多个通道上。多通路方式不仅解决了“瓶颈”问题。而且提高了系统的可靠性,因为个别通道或控制器的故障不会使设备和存储器之间没有通路。 5、试对VESA及PCI两种总线进行比较。P167 答:1、VESA 该总线的设计思想是以低价位迅速点领市场。VESA 总线的带宽为32 位,最高传输速率为132Mb/s。VESA 总线仍存在较严重的缺点,它所能连接的设备数仅为2—4 台,在控制器中无缓冲,故难于适应处理器速度的不断提高,也不能支持后来出现的Pentium 微机。2、PC 随着Pentium 系列芯片的推出,PCI 在CPU 和外设间插入一复杂的管理层,用于协调数据传输和提供一致的接口。在管理层中配有数据缓冲,通过该缓冲可将线路的驱动能力放大,使PCI 最多能支持10 种外设,并使高时钟频率的CPU 能很好地运行,最大传输速率可达132Mb/s。PCI 即可连接ISA、EISA 等传统型总线,又可支持Pentium 的64 位系统,是基于奔腾等新一代微处理器而发展的总线。 6、试说明推动I/O控制发展的主要因素是什么?P167 答:在I/O 控制方式的整个发展过程中,始终贯穿着这样一条宗旨,即尽量减少主机对I/O 控制的干预,把主机从繁杂的I/O 控制事务中解脱出来,以便更多地去完成数据处理任务。 7、有哪几种I/O控制方式?各适用于何种场合?P167-P170 答:1、程序I/O 方式:2、中断驱动I/O 控制方式:3、直接存储器访问(DMA)4、I/O 通道控制方式: 8、试说明DMA的工程流程。P170图要画 答:当CPU 要从磁盘读入一数据块时,便向磁盘控制器发送一条读命令。该命令被送到其中的命令寄存器(CR)中。同时,还须发送本次要将数据读入的内存起

第三章 调度和死锁

第三章调度和死锁 一、单选题 1、在就绪队列中有n个进程等待使用一个cpu,那么如果采用拥有同一种调度算法,总共可能有()种调度顺序 A. n B. n2 C. n( n-1)/2 D. n! 2、现在有三个同时到达的作业A,B,C,它们的执行时间分别是t1,t2,t3,且t1

李建伟版实用操作系统第二版最新习题 3 进程同步与通信

李建伟版实用操作系统第二版最新习题 3 进程同步与通信 一、选择题 题号1 2 3 4 5 6 7 8 9 10 答案A D D C B C A B A A 题号11 12 答案D C 二、综合题 1、答:临界资源也称独占资源、互斥资源,它是指某段时间内只充许一个进程使用的资源。比如打印机等硬件资源,以及只能互斥使用的变量、表格、队列等软件资源。各个进程中访问临界资源的、必须互斥执行的程序代码段称为临界区,各进程中访问同一临界资源的程序代码段必须互斥执行。 为防止两个进程同时进入临界区,可采用软件解决方法或同步机构来协调它们。但是,不论是软件算法还是同步机构都应遵循下述准则: ①空闲让进。②忙则等待。③有限等待。④让权等待。 2、答:忙等待意味着一个进程正在等待满足一个没有闲置处理器的严格循环的条件。因为只有一个CPU 为多个进程服务,因此这种等待浪费了CPU 的时钟。 其他类型的等待:与忙等待需要占用处理器不同,另外一种等待则允许放弃处理器。如进程阻塞自己并且等待在合适的时间被唤醒。忙等可以采用更为有效的办法来避免。例如:执行请求(类似于中断)机制以及PV 信号量机制,均可避免“忙等待”现象的发生。 3、答: 在生产者—消费者问题中,Producer 进程中P(empty)和P(mutex)互换先后次序。先 执行P(mutex),假设成功,生产者进程获得对缓冲区的访问权,但如果此时缓冲池已满,没有空缓冲区可供其使用,后续的P(empty)原语没有通过,Producer 阻塞在信号量empty 上,而此时mutex 已被改为0,没有恢复成初值1。切换到消费者进程后,Consumer 进程执行P(full)成功,但其执行P(mutex)时由于Producer 正在访问缓冲区,所以不成功,阻塞在信号量mutex 上。生产者进程和消费者进程两者均无法继续执行,相互等待对方释放资源,会产生死锁。 在生产者和消费者进程中,V 操作的次序无关紧要,不会出现死锁现象。 4、答:

处理机调度与死锁作业题

第三章处理机调度与死锁作业 一、判断题 1、先来先服务(FCFS)算法是一种简单的调度算法,但其效率比较高。(错) 2、FCFS调度算法对短作业有利。(错) 3、时间片的大小对轮转法(RR)的性能有很大的影响,时间片太短,会导致系统开销大大增加。(对) 二、选择题 1、在进行作业调度时,要想兼顾作业等待时间和作业执行时间,应选取(C)。 A.轮转法 B.先进先出调度算法 C.响应比高优先算法 D.短作业优先调度 2、若系统中有五台绘图仪,有多个进程均需要使用两台,规定每个进程一次仅允许申请一台,则至多允许(D)个进程参于竞争,而不会发生死锁。 A、5 B、2 C、3 D、4 解析:由于系统资源总共只有5台,若有5个进程参与竞争,每个进程在拥有一台打印机后,由于都需要两台打印机,所有进程都不能向前推进,假设又都不愿意放弃已申请到的打印机,系统便进入死锁状态,若有4个进程参与竞争,每个进程拥有一台打印机后,任意一个进程在获得剩余的一台打印机后就可以运行,在该进程运行完后,释放拥有的两台打印机,其他3个进程就可以顺利推进,完成各自任务。 3、在进程资源图中( C )是发生死锁的必要条件。 A.互斥 B.可剥夺件 C.环路 D.同步 三、填空题 1、在响应比最高者优先的作业调度算法中,当各个作业等待时间相同时,计算时间短的作业将得到优先调度;当各个作业要求运行的时间相同时,等待时间长的作业得到优先调度。 2、分时系统采用的调度方法是时间片轮转调度算法。在分时系统中,当用户数目为100时,为保证响应时间不超过2秒,此时时间片最大应为20ms。 3、有三个同时到达的作业J1,J2和J3,它们的执行时间分别是T1,T2和T3,且T1

操作系统第五章复习资料

第五章习题 一、选择题 1、在一般大型计算机系统中,主机对外设的控制可通过通道、控制器和设备三个层次来实现。从下述叙述中选出一条正确的叙述。()(1)控制器可控制通道,设备在通道控制下工作; (2)通道控制控制器,设备在控制器控制下工作; (3)通道和控制器分别控制设备; (4)控制器控制通道和设备的工作。 2、从下面关于设备属性的叙述中,选择一条正确的论述。()(1)字符设备的一个基本特征是可寻址的,即能指定输入时的原地址和输出时的目标地址;(2)共享设备是指在同一时刻允许多个进程同时访问的设备; (3)共享设备必须是可寻址的和随机访问的设备; (4)在分配共享设备和独占设备时,都可能引起进程死锁; 3、通道是一种特殊的(A),具有(B)能力。主机的CPU与通道可以并行工作,并通过(C)实现彼此之间的通信和同步。 A:(1)I/O设备;(2)设备控制器;(3)处理机;(4)I/O控制器 B:(1)执行I/O指令集;(2)执行CPU指令集;(3)传输I/O命令;(4)运行I/O进程C:(1)I/O指令;(2)I/O中断;(3)I/O指令和I/O 中断;(4)操作员 4、在I/O 设备控制的发展过程中,最主要的推动因素是(A)。提高I/O速度和设备利用率,在OS中主要依靠(B)功能。使用户所编制的程序与实际使用的物理设备无关是由(C)功能实现的。 A:(1)提高资源利用率;(2)提高系统吞吐量;(3)减少主机对I/O控制的干预; (4)提高CPU与I/O设备的并行操作吃呢高度 B,C:(1)设备分配;(2)缓冲管理;(3)设备管理;(4)设备独立性;(5)虚拟设备5、磁盘属于(A),其信息的存取是以(B)为单位的;磁盘的I/O控制主要采取(C)方式;打印机的I/O控制主要采取(D)方式。 A:(1)字符设备;(2)独占设备;(3)块设备;(4)虚拟设备 B:(1)位(bit)(2)字节(3)帧(4)固定长数据块 C、D:(1)程序I/O方式;(2)程序终端;(3)DMA;(4)Spooling 6、在程序I/O方式中,对于输出设备,准备就绪是指(A)。 A:(1)输出缓冲区已空;(2)输出缓冲区已有数据;(3)输出设备已开始工作; (4)输出设备已收到I/O指令 7、在利用RS-232接口进行通信时,其通道速率为9.6kb/s (b为bit)。如果在通信接口中仅设置了一个8位寄存器作为缓冲寄存器,这意味着大约每隔(A)的时间便要中断一次CPU,且要求CPU必须在(B)时间内予以响应。 A,B:(1)80μs (2)0.1ms ;(3)0.8ms ;(4)1ms ;(5)8ms 8、假定把磁盘上一个数据块中的信息输入到一单缓冲区中的时间T为100μs,将缓冲区中的数据传送到用户区的时间M为50μs,而CPU对这一块数据进行计算的时间C为50μs。这样,系统对每一块数据的处理时间为(A);如果将单缓冲区改为双缓冲区,则系统对每一块数据的处理时间为(B)。 A,B:(1)50μs;(2)100μs;(3)150μs ;(4)200μs; (5)250μs 9、操作系统中采用缓冲技术的目的是为了增强系统(A)的能力;为了使多个进程能有效地同时处理输入和输出,最好使用(B)。 A:(1)串行操作;(2)并行操作;(3)控制操作;(4)中断操作

第3章处理机调度与死锁-填空题

第3章处理机调度与死锁-填空题 1.高级调度又称作( )调度,其主要功能是( );低级调度又称作( )调度,其主功能是( )。 2.作业调度必须做( )和( )两个决定。 3.进程调度的主要任务是( )、( )和( ),进程调度的方式主要有( )和( )两种方式。 4、在抢占调度方式中,抢占的原则主要有; ( )、( )和( )。 5.在设计进程调度程序时,应考虑( )、( )和( )三个问题。 6.为了使作业的平均周转时间最短,应该选择( )调度算法;为了使当前执行的进程总是优先权最高的进程,则应选择( )调度算法;而分时系统则常采用( )调度算法。 7.分时系统中,时间片选得太小会造成( )的现象,因此,时间片的大小一般选择为( )。 8.在采用动态优先权时,为了避免一个低优先权的进程处于饥饿状态,可以( );而为了避免一个高优先权的长作业长期垄断CPU,则可以( )。 9.高响应比优先调度算法综合考虑了作业的( )和( ),因此会兼顾到长、短作业。 10.死锁产生的主要原因是( )和( )。 11.死锁产生的必要条件是( )、( )、( )和( )。 12.通过破坏死锁产生的四个必要条件可进行死锁的预防,其中( )条件 一般是不允许破坏的,一次性分配所有资源破坏的是其中的( )条件,资源的有序分配破坏的是其中的( )条件。 13.避免死锁,允许进程动态地申请资源,但系统在进行分配时应先计算 资源分配的( )。若此次分配不会导致系统进入( ),便将资源分配给它,否则便让进程( )。

14.解决死锁问题的方法有预防、避兔、检测并解除等,一次性分配所有的资源采用的是其中的( )方法,银行家算法采用的是其中的( )方法。 15.根据死锁定理,一个状态为死锁状态的充分条件是当且仅当该状态的资源分配图是( )时。 16. ( )和( )是解除死锁的两种常用方法。

进程同步与互斥练习

进程同步与互斥 练习题 选择题 .任何两个并发进程之间存在着()地关系. .各自完全独立 .拥有共享变量 .必须互斥 .可能相互制约文档收集自网络,仅用于个人学习 .并发进程执行地相对速度是(). .由进程地程序结构决定地 .由进程自己来控制地 .在进程被创建时确定地 .与进程调度策略有关地文档收集自网络,仅用于个人学习 .并发进程执行时可能会出现“与时间有关地错误”,这种错误是由于并发进程()引起地. .使用共享资源 .执行地顺序性 .要求计算时间地长短 .程序地长度文档收集自网络,仅用于个人学习 .并发进程中与共享变量有关地程序段称为(). .共享子程序 .临界区 .管理区 .公共数据区文档收集自网络,仅用于个人学习 .用来实现进程同步与互斥地操作实际上是由()过程组成地. .一个可被中断地 .一个不可被中断地 .两个可被中断地 . 两个不可被中断地文档收集自网络,仅用于个人学习 .进程从运行态变为等待态可能由于(). .执行了操作 .执行了操作 .时间片用完 .有高优先级进程就绪文档收集自网络,仅用于个人学习 .用操作管理互斥使用地资源时,信号量地初值应定义为(). .任意正整数 . . .文档收集自网络,仅用于个人学习 .用、操作管理临界区时,互斥信号量地初值应定义为( ). .任意值 . . . .现有个具有相关临界区地并发进程,如果某进程调用操作后变为等待状态,则调用操作时

信号量地值必定为(). .≤ . . .文档收集自网络,仅用于个人学习 .用操作管理临界区时把信号量地初值定义为,现已有一个进程在临界区,但有个进程在等待进人临界区,这时信号量地值为(). . . . .文档收集自网络,仅用于个人学习 .用操作唤醒一个等待进程时,被唤醒进程地状态应变成()状态. .执行 .就绪 .运行 .收容文档收集自网络,仅用于个人学习 .进程间地同步是指进程间在逻辑上地相互( )关系. .联接.制约文档收集自网络,仅用于个人学习 .继续.调用 多项选择题 .有关并发进程地下列叙述中,()是正确地. .任何时刻允许多个进程在同一上运行 .进程执行地速度完全由进程自己控制 .并发进程在访问共享资源时可能出现与时间有关地错误 .同步是指并发进程中存在地一种制约关系 .各自独立地并发进程在执行时不会相互影响文档收集自网络,仅用于个人学习.一个正在运行地进程调用()后,若地值为(),则该进程可以继续运行. .> .< .≠ .≥ .≤ 文档收集自网络,仅用于个人学习 判断题 .有交往地并发进程一定共享某些资源. () .如果不能控制并发进程执行地相对速度,则它们在共享资源时一定会出现与时间有关地错误. () .并发进程地执行结果只取决于进程本身,不受外界影响. () .多道程序设计必然导致进程地并发执行. () 有个进程共享同一临界资源,若使用信号量机制实现对资源地互斥访问,则信号量值地变化范围是. 文档收集自网络,仅用于个人学习 对于两个并发进程,设互斥信号量为,若,则 表示没有进程进入临界区表示有一个进程进入临界区 表示有一个进程进入临界区,另一个进程等待进入 表示有两个进程进入临界区

进程调度、死锁

进程调度、死锁 试验一:进程调度 一、实验目的 进程是操作系统中最基本、最重要的概念,进程调度又是操作系统的核心模块。本实验要求学生独立地用 C 或 C++语言编写一个简单的进程管理程序,其主要部分是进程调度。调度算法可由学生自行选择,如基于动态优先级的调度算法或多级反馈队列调度算法。 通过本实验可加深学生对进程各种状态的转化和各种调度算法的理解,提高系统程序设计能力。 二、实验题目 以链式结构组成空闲 PCB 栈,以双向链式结构组成进程的就绪队列和睡眠队列,模拟UNIX 的进程管理程序,实现以下操作(可用键盘命令或由产生的随机数决定操作和参数)。 1( 创建一个新进程:如 pid=newp(pri,size,time),申请空闲 PCB 和所需内存, 填写 PCB的各项初始数据,将该 PCB 送入就绪队列。 2( 调度和执行:自己设计优先调度算法,在就绪队列中选择一个优先级最高的进程,使其运行若干个单位时间。要求在运行期间进程的 p_cpu、p_pri 和 p_time 要变化,并在适当的时机重新调度。 3( 进程睡眠:进程运行时可调用自编的睡眠函数,主动进入睡眠状态,并转调度程序。也可由操作使进程强迫挂起,睡眠适当时间。进程睡眠时要在 PCB 中记录睡眠原因和优先数。 4( 进程的唤醒:根据睡眠原因,将相应的进程从睡眠队列中调出,转入就绪

队列。如该进程优先级比现运行进程优先级高,转调度程序。 5( 进程的终止:如一个进程运行完作业所需的时间,或者用操作杀死该进程,该进程就终止,释放所占用的内存和 PCB 资源,转调度程序。 三、设计思路和流程图 1、设计思路 将程序主要分为两部分:排序、分派。排队:事先将系统中所有就绪的进程按照一定的方式排成一个队列;分派:把由所选定的进程,从就绪队列取出该进程,然后上下文切换。 2、流程图 开始 输入进程 对进程排序 选择运行时间最短的进程 否运行完毕 是 结束 四、主要数据结构及其说明 float arrivetime 到达时间 float servicetime 运行时间 float starttime 开始时间 float finishtime 完成时间 五、源程序并附上注释 //最短进程优先调度算法、 #include #include #include using namespace std;

相关主题
文本预览
相关文档 最新文档