教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

操作系统试题库(及其答案),让你完美掌握操作系统(3)

来源:网络收集 时间:2026-08-17
导读: 2)两队进行篮球比赛 进程互斥 3)流水线生产中的各道工序 进程同步 4)商品生产和社会消费 进程同步 19.通信方式为消息传递。 三.应用题 1.进程 Allocation Need Availabe Avelable+ Allocation No A B C D A B C

2)两队进行篮球比赛 进程互斥

3)流水线生产中的各道工序 进程同步

4)商品生产和社会消费 进程同步

19.通信方式为消息传递。

三.应用题

1.进程 Allocation Need Availabe Avelable+ Allocation No

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

P0 0 0 3 2 0 0 1 2 1 6 2 2 1 6 5 4 1

P1 1 0 0 0 1 7 5 0 1 9 8 6 2 9 8 6 3

P2 1 3 5 4 2 3 5 6 2 9 8 6 3 12 13 10 4

P3 0 3 3 2 0 6 5 2 1 6 5 4 1 9 8 6 2

P4 0 0 1 4 0 6 5 6 3 12 13 10 3 12 14 14 5

可以找到一个安全序列{P0、P3、P1、P2、P4},系统是安全的。

进程P2此时提出资源申请(1,2,2,2), 如系统实施此次分配使系统可用资源减到(0,4,0,0),再也无法满足各进程对资源的需求,系统进入一个不安全状态,系统不能将资源分配给进程P2。

进程 Allocation Need Availabe Avelable+ Allocation No

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

P0 0 0 3 2 0 0 1 2 0 4 0 0

P1 1 0 0 0 1 7 5 0

P2 2 5 7 6 1 1 3 4

P3 0 3 3 2 0 6 5 2

P4 0 0 1 4 0 6 5 6

2.前三种不会产生死锁,第四种进程推进顺序产生了死锁。

3.现在系统还剩资源2个。按照银行算法执行的话,不管是进程B还是进程C向系统提出1个资源的请求,系统都不能满足她们的要求,因为满足了她们的要求,系统中的进程没有一个能达到资源最大需求量,从而产生死锁。只有进程A对资源的请求可以满足。因为系统剩余资源数能够使A达到最大资源需求量,从而A可以运行结束,并释放他所占有的全部资源(4个),然后系统又可以满足B达到最大资源需求量而运行结束并释放他所占有的全部资源,最后进程C也可以达到最大资源需求量而运行结束。

银行家算法能保证在任何时刻至少有一个进程可以得到所需要的全部资源而执行结束,执行结束后,归还的资源加入到系统的剩余资源中,这些资源又至少可以满足另一个进程的最大需求 。于是保证了所有进程都能在有限时间内得到需要的全部资源,使系统一直出于安全状态。这样的资源分配当然避免了死锁。

6.(1)可能会发生死锁 (2分)

例如:进程P1,P2和P3分别获得资源S3,S1和S2后再继续申请资源时都要等

待(2分),这是循环等待。(或进程在等待新源时均不释放已占资源)

(2)可有几种答案:A.采用静态分配 (2分)由于执行前已获得所需的全部资源,故不会出现占有资源又等待别的资源的现象(或不会出现循环等待资源现象)。 (2分)

或B.采用按序分配 (2分)不会出现循环等待资源现象。(2分)

或C.采用银行家算法 (2分)因为在分配时,保证了系统处于安全状态。 (2分)

7.设置两个信号量来控制 A、B产品的存放数量,sa表示当前允许A产品比B产品多入库的数量,即在当前库存量和B产品不入库的情况下,还可以允许sa个A产品入库;sb表示当前允许B产品比A产品多入库的数量,即在当前库存量和A产品不入库的情况下,还可以允许sb个B产品入库。初始时,sa为M一1,sb为N一1,当往库中存放入一个A产品时,则允许存入B产品的数量也增加1;当往库中存放入一个B产品时,则允许存入A产品的数量也增加1。 产品A、B的入库过程描述如下:

int mutex=1; /*互斥信号量*/

int sa=M-1;

int sb=N-1;

main( )

{

while(1)

{

if(取的是A产品)

{

p(sa);

p(mutex); 将产品入库;

v(mutex);

v(sb):

}

else /*取的产品是B*/

{

p(sb);

p(mutex); 将产品入库

v(mutex);

v(pa);

}

}

}

8.这个问题实际上是两个生产者和两个消费者被连结到仅能放一个产品的缓冲器上。生产者各自生产不同的产品,但就其本质而言,他们是同一类生产者。而消费者则各自取需要的产品消费,他们的消费方式不同。实现爸爸、妈妈、儿子和女儿正确同步工作的程序如下:

var

plate : integer;

sp:semaphore; /* 盘子里可以放几个水果 */ sg1:semaphore; /* 盘子里有香蕉 */ sg2:semaphore; /* 盘子里有苹果 */ sp := 1; /* 盘子里允许放入一个水果*/ sg1:= 0; /* 盘子里没有香蕉 */ sg2:= 0; /* 盘子里没有苹果*/ cobegin process father begin L1: 削一个苹果; P(sp); 把苹果放入plate; V(sg2); goto L1; end; process mother begin L2: 剥一个香蕉; P(sp); 把桔子放入plate; V(sg1); goto L2; end; process son begin L3: P(sg1); 从plate 中取香蕉; V(sp); 吃桔子; goto L3; end; process daughter begin L4: P(sg2);

从plate 中取苹果;

9.定义两个信号量,一个信号量start表示是否允许司机启动车辆,另一个信号量open

表示是否允许售票员开车门。初始状态是车停在始发站,车门开着,等待乘客上车。因此, 两个信号量的初值都是0。

semaphore start=0; semaphore open=0; //司机的活动:

P1: do{

P(start);

启动车辆; 正常行车; 到站停车; V(open); }while (1); //售票员的活动: P2: do{ 关车门; V(start);

售票;

P(open);

开车门;

上下乘客;

}while (1)

10.编写两个进程,一个处理读者进入,一个处理读者离开,进程是程序的动态执行设置信号量 full 为初值为 0, 空的信号量 empty 初值为100, 互斥信号量 mutex 初值为1 进入 离开

P(empty) P(full)

P(mutex) P(mutex)

登记 取消登记

V(mutex) V(mutex)

V(full) V(empty)

进入 离开

12.设信号量empty(表示缓冲器中可存放多少件物品)的初值为n, 信号量full(表示缓冲器中存有几件物品)的初值为0。当缓冲器中没有放满n件物品时,生产者调用P(empty)都不会成为等待状态而可把物品存入缓冲器。但当缓冲器中已经有n件物品,生产者想再存 入一件物品将被拒绝。每存入一件物品后,由于调用V(full),故empty的值表示缓冲器中 可用的物品数,只要full>0,消费者调用P(full)后总可去取物品。每取走一件物品后,由 于调用V(empty),便增加了一个可用来存放物品的位置。用指针k和t分别指示生产者往缓冲器存物品和消费者从缓冲器中取物品的相对位置,它们的初值为0,那么,一个生产者和一个消费者共用容量为n的缓冲器时,可如下进行同步工作:

设信号量empty,full,初值为empty=n,full=0;整型变量k,t,初值k=t=0。生产者进程: begin

L1:produce a product;

B[k]:=product; k:=(k十1)mod n; V(full); go to L1 end; 消费者进程 …… 此处隐藏:2906字,全部文档内容请下载后查看。喜欢就下载吧 ……

操作系统试题库(及其答案),让你完美掌握操作系统(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/134457.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)