操作系统复习题(3)

2025-09-23

14. 设公共汽车上,司机的活动顺序是:启动车辆、正常行车、到站停车;售票员的活动顺序是:关车门、售票、开车门。现假设初始状态为:司机和售票员都已经在车上,汽车处于停止状态,车门处于开的状态。在汽车不断地到站、停车、行驶过程中,请用信号量的PV操作实现司机与售票员之间的同步关系。

参考答案:

第一步:确定进程

2个进程 Driver(司机)、Busman(售票员) Driver进程:

? 启动车辆 ? 正常行车 ? 到站停车 Busman进程:

? 关车门 ? 售票 ? 开车门

第二步:确定进程的同步、互斥关系

? 同步:当售票员将车门关上后,司机才可以启动车辆 ? 同步:当司机到站停车后,售票员打开车门

第三步:设置信号量

? 车门关上,close,初值0 ? 到站停车,stop,初值0

第四步:用伪代码描述

begin

close, stop:semaphore; close := 0; stop := 0;

cobegin

Driver ( ); Busman ( ); coend;

end;

process Driver ( )

begin L1: P(close);

启动车辆;

正常行始; 到站停车; V(stop); goto L1 end;

process Busman ( )

begin L2: 关车门; V(close); 售票;

P(stop); 开车门;

goto L2

end;

15. 哲学家进餐问题:五位哲学家吃面条,只有五根筷子,每个人必须用一双筷子才能吃面条。请用信号量的PV操作描述哲学家之间的关系。 参考答案:错误解法!!!!!!!

第一步:确定进程

5个进程 Pi(i= 0~4) Pi进程:

? 思考

? 拿起左边筷子 ? 拿起右边筷子 ? 吃面条

? 放下右边筷子 ? 放下左边筷子

第二步:确定进程的同步、互斥关系

互斥:筷子是互斥资源, 每个人都只能使用他左右的两根筷子

第三步:设置信号量

? chopstick[5] :表示5根筷子,初值 1

第四步:用伪代码描述

begin

chopstick[0~4] :semaphore; chopstick[0~4] := 1;

cobegin

process Pi(i=0,2,…,4) begin

思考;

P(chopstick[i] );

P(chopstick[i+1%5] ); 吃面条;

V(chopstick[i+1%5] ); V(chopstick[i] ); end coend;

end;

错误原因:假如所有的哲学家都同时拿起左侧筷子,看到右侧筷子不可用,都在等待右侧筷

子,无限期地运行,但是都无法取得任何进展,即出现饥饿,所有哲学家都吃不上饭。 解决方案:

1、 至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释放出他

所使用过的两支筷子,从而可使更多的哲学家进餐。

2、 规定奇数号的哲学家先拿起他左边的筷子,然后再去拿他右边的筷子;而偶数号的哲学家

则相反.按此规定,将是1,2号哲学家竞争1号筷子,3,4号哲学家竞争3号筷子.即五个哲学家都竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有一个哲学家能获得两支筷子而进餐。而申请不到的哲学家进入阻塞等待队列,则先申请的哲学家会较先可以吃饭,因此不会出现饿死的哲学家。

3、 将拿筷子的操作做成原子操作,即当一个哲学家正在拿筷子的时候,其它的哲学家不能

动筷子,当他那好筷子开始吃饭的时候,其它哲学家才可以拿筷子。

这里给出正确解决方案中的第1种方案: 解:

第一步:确定进程

5个进程 Pi(i= 0~4) Pi进程:

? 思考

? 拿起左边筷子 ? 拿起右边筷子 ? 吃面条

? 放下右边筷子 ? 放下左边筷子

第二步:确定进程的同步、互斥关系

互斥:筷子是互斥资源, 每个人都只能使用他左右的两根筷子 同步:只能有四个人同时吃饭

第三步:设置信号量

? chopstick[5] :表示5根筷子,初值 1 ? num:表示允许吃面的人的个数,初值4

第四步:用伪代码描述

begin

chopstick[0~4] :semaphore; num : semaphore;

chopstick[0~4] := 1; num := 4;

cobegin

process Pi(i=0,2,…,4) begin

思考; P (num);

P(chopstick[i]);

P(chopstick[i+1%5] ); 吃面条;

V(chopstick[i+1%5] );

V(chopstick[i] ); V (num); end coend;

end;

16. 系统中只有一台打印机,有三个进程在运行中都需要使用打印机进行打印输出,问:这三个进程间有什么样的制约关系?试用信号量的PV操作描述这种关系。

参考答案:由于打印机是临界资源,三个进程共享临界资源,是互斥关系。 为临界资源设置互斥信号量s,初始值为1:

begin

s :semaphore; s := 1;

cobegin

process Pi(i=0,1,2) begin

其他工作; P (s); 打印; V (s); end coend;

end;

17. 根据例2.5,把题目修改为以下几种情况,请用PV操作实现他们之间的同步关系:

(1)桌上一个盘子,只能放一只水果。爸爸放苹果,妈妈放桔子,儿子只吃桔子,女儿只吃苹果。

(2)桌上一个盘子,只能放一只水果。爸爸放苹果,妈妈放桔子,儿子吃桔子、苹果。 参考答案:

第一步:确定进程

4个进程Father(爸爸)、Mother(妈妈)、Son(儿子)、Daughter(女儿) Father进程:

? 将苹果放入盘中 Mother进程:

? 将桔子放入盘中 Son进程:

? 从盘中取出桔子 ? 吃桔子 Daughter进程:

? 从盘中取出苹果 ? 吃苹果

第二步:确定进程的同步、互斥关系

? 同步:Father当盘中无水果时,才可以将苹果放入盘中 ? 同步:Mother当盘中无水果时,才可以将桔子放入盘中 ? 同步:Son当盘中有桔子时,才可以从盘中取出桔子

? 同步:Daughter当盘中有苹果时,才可以从盘中取出苹果

第三步:设置信号量

? 盘中无水果,Sp,初值1 ? 盘中有桔子,So,初值0 ? 盘中有苹果,Sa,初值0

第四步:用伪代码描述

begin

Sp,So,Sa:semaphore; Sp :=1; So :=0; Sa :=0;

cobegin

Father ( ); Mother ( ); Son ( );

Daughter ( ); coend; end;

process Father ( ) begin

L1: P(Sp);

将苹果放入盘中; V(Sa); goto L1; end;

process Mother ( ) begin

L2: P(Sp);

将桔子放入盘中; V(So); goto L2; end;

process Son ( ) begin

L3: P(So);

从盘中取出桔子; V(Sp) 吃桔子;


操作系统复习题(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:一站到底(风俗、生活百科)

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219