操作系统进程部分的习题.pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

进程部分的习题

1.在公共汽车上,司机进程和售票员进程各司其职。司机在正常行车中售票员售票,两者

之间没有制约关系,可以任意并发。但是在其他环节,司机和售票员进程之间存在着如下同

步关系:

1)司机停车后等待售票员关门后才能启动车辆。

2)售票员售完票后,等待司机到站停车,停车后才能打开车门。

vardoor,stop:semaphore:=0,0

begin

parbegin

司机进程:

begin

while(true){

wait(door);//等待售票员发送关门信息

启动车辆;

正常行车;

到站停车;

signal(stop);//给售票员发送到站信息

}

end;

售票员进程:

begin

while(true){

关车门;

signal(door);//给司机发送关门信息

售票;

wait(stop);//等待司机发送到站信息

开车门;

上下乘客;

}

end

parend

end.

2.某寺庙,有小和尚,老和尚若干。有一水缸,由小和尚提水入缸供老和尚饮用。水缸可

容10桶水,水取自同一井中。水井径窄,每次中能容下一个桶取水。水桶总数为3个。每

人一次取缸水仅为1桶,且不可同时进行。试用记录型信号量给出有关取水、入水的算法

描述。

根据题意,定义信号量及其初值如下:

(1)水桶为临界资源需互斥使用,定义信号量bucket,因有3个桶,故初值为3;

(2)水井一次只能允许下一个桶取水,定义互斥信号量well,初值为1;

(3)水缸一次只能允许一个人取水,定义互斥信号量jar,初始值为1;

(4)empty和full用于小和尚和老和尚之间的同步制约关系。因为缸能存10桶水,所以

empty初始值为10;开始时缸中没有水,full的初始值为0。

semaphorebucket=3,jar=1,full=0,empty=10,well=1;

young_monk(){/*小和尚入水算法*/

while(1){

wait(empty);

wait(bucket);

wait(well);

从水井中打水;

signal(well);

wait(jar);

倒入水缸;

signal(jar);

signal(bucket);

signal(full);

}

}

old_monk(){/*老和尚取水算法*/

while(1){

wait(full);

wait(bucket);

wait(jar);

从缸中取水;

signal(jar);

signal(bucket);

signal(empty);

从桶中倒入饮用;

}

}

3.设有3个进程A、B、C,其中A与B构成一对生产者与消费者(A为生产者,B为消费

者),共享一个由n个缓冲区组成的缓冲池;B与C也构成一对生产者与消费者(此时B为

生产者,C为消费者),共享另一个由m个缓冲区组成的缓冲池。用信号量机制协调它们的

同步问题。

Semaphorefull1=0,full2=0,empty1=n,empty2

文档评论(0)

182****0949 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档