第一范文网 - 专业文章范例文档资料分享平台

操作系统教程第5版部分习题标准答案

来源:用户分享 时间:2025/6/1 10:47:09 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

(1) 公用信号量; (2) 私有信号量。 按取值分

(1) 二值信号量; (2) 一般信号量。

15.何谓管程?它有哪些属性?

管程是由局部于自己的若干公共变量及其声明和所有访问这些公共变量的过程所组成的软件模块,它提供一种互斥机制,进程可以互斥地调用管程的过程。

(1) 共享性; (2) 安全性; (3) 互斥性。

25.试述产生死锁的必要条件、死锁产生的原因及预防死锁的方法。 (1) (2) (3) (4)

互斥条件;

占有和等待条件; 不剥夺条件; 循环等待条件。

进程推进顺序不当、PV操作使用不妥、同类资源分配不均或对某些资源的使用未加限制等,不仅与系统拥有的资源数量有关,而且与资源分配策略、进程对资源的使用要求以及并发进程的推进顺序有关。

(1) 破坏条件1(互斥条件);

(2) 破坏条件2(占有和等待条件); (3) 破坏条件3(不剥夺条件); (4) 破坏条件4(循环等待条件)。

二、 2、

答:不同

(1):初值为1,范围为[-n+1,1];(2):初值为m,范围为[-n+m,m]。 5、答:1)使用信号量和P、V操作:

var name: array[1..100] of A。

A=record number:integer。 name:string。 end

for i:=1 to 100 do {A[i].number:=i。 A[i].name:=null。}

9 / 19

mutex,seatcount:semaphore。 i:integer。mutex:=1。seatcount:=100。 cobegin {

process readeri(varreadername:string)(i=1,2,…) {

P(seatcount)。 P(mutex)。

for i:=1 to 100 do i++

if A[i].name=null then A[i].name:=readername。

reader get the seat number =i。 /*A[i].number V(mutex)

进入阅览室,座位号i,座下读书。

P(mutex)。

A[i] name:=null。 V(mutex)。 V(seatcount)。 离开阅览室。 } } coend.

2) 使用管程操作:

TYPE readbook=monitor

VAR R:condition。 Interface Module IM。 i,seatcount:integer。

name:array[1..100] of string。 DEFINE readercome,readerleave。 USE check,wait,signal,release。

procedure readercome(readername) begin

check(IM)。

if seatcount≥100 wait(R,IM) seatcount:=seatcount+1。 for i=1 to 100 do i++

if name[i]==null then name[i]:=readername。 get the seat number=i。 release(IM)。 end

procedure readerleave(readername) begin

10 / 19

check(IM)。 seatcount--。

for i=1 to 100 do i++

if name[i]==readername then name[i]:=null。 release(IM)。 end

begin

seatcount:=100。name:=null。 end

cobegin

process readeri(i=1,2.…) begin

readercome(readername)。 read the book。

readerleave(readername)。 leave the readroom。 end coend.

6、答:实质上是两个进程的同步问题,设信号量S1和S2分别表示可拣白子和黑子,不失一般性,若令先拣白子。

var S1,S2:semaphore。

S1:=1。S2:=0。 cobegin {

process P1 begin repeat P(S1)。

拣白子

V(S2)。 until false。 end

process P2 begin repeat P(S2)。

拣黑子

V(S1)。 until false。

end }

11 / 19

coend.

16、答:(1)用信号量和P、V操作。 var S,S1,S2,S3。semaphore。 S:=1。S1:=S2:=S3:=0。 flag1,flag2,flag3:Boolean。 flag1:=flag2:=flag3:=true。 cobegin {

process 供应者

begin

repeat

P(S)。

取两样香烟原料放桌上,由flagi标记。 /*flage1、flage2、flage3代表烟草、纸、火柴 if flag2&flag3 then V(S1)。 /*供纸和火柴 else if flag1&flag3 then V(S2)。 /*供烟草和火柴 else V(S3)。 /*供烟草和纸 untile false。 end

process 吸烟者1

begin

repeat P(S1)。 取原料。 做香烟。 V(S)。 吸香烟。 untile false。 process 吸烟者2

begin

repeat P(S2)。 取原料。 做香烟。 V(S)。 吸香烟。 untile false。 process 吸烟者3

begin

repeat P(S3)。 取原料。 做香烟。 V(S)。

12 / 19

操作系统教程第5版部分习题标准答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1zvmq7qjcj03gjy5zd2f62h6002tp400lbq_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top