操作系统练习同步问题有答案.docx

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

操作系统练习题:

在南开大学和大学之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但中间有一个小的“安全岛”M(同时允许两辆自行车停留),可供两辆自行车已从两端进小路情况下错车使用,如图所示。试设计一个算法使来往的自行车均可顺利通过。

天大TK

天大

T

K

M

S

L

南开

首先中间的安全岛M仅允许两辆自行车通过,应作为临界资源设置信号量。但仔细分析发现,在任何时刻进入小路的自行车最多不会超过两辆(南开和天大方向各一辆),因此不需为安全岛M设置信号量。在路口S处,南开出发的若干辆自行车应进行路口资源的争夺,以决定谁先进入小路SK段,为此设置信号量S,用以控制路口资源的争夺;同理,设置信号量T,控制天大方向自行车对路口T的争夺。又小路SK段仅允许一辆车通过,设置信号量SK初值为1,同理设置小路LT段信号量LT初值为1。

程序如下:

S:= l; T:=1; SK:=1; LT:=1;Parbegin

进程P:(南开方向自行车)

begin

P(S); {与其它同方向的自行车争夺路口S}

P(SK);{同对面自行车争夺路段SK}通过SK;

进入M;**

V(SK);{一旦进入M,便可释放路段SK}P(LT);{同对面的自行车争夺路段LT}

通过LT;

V(LT);{将路段LT释放}

V(S); {将路口S释放给同方向的正在路口S处等待的自行车}

end,

进程Q:(天大方向自行车)begin

P(T);

P(LT);

通过LT;进入M;V(LT);

P(SK);

通过SK;

V(SK);

V(T);

End;Parend。

说明**:

P进程进入安全岛M后,释放了路段SK,但没有释放路口S,原因在于它是向对面的4进程释放路段资源SK,而在P进程离开小路LT后,才会将路口S释放给其他P进程,如不这样,就会死锁。请考虑如下情况:两个方向各有一辆车前进,若在P进程到达安全岛M后,执行V(S)及V(SK)操作,则有可能使得同方向的其它P进程得到路段SK的使用权,而进入小路;同理,Q进程到达安全岛后执行V(LT)及V(T)操作,有可能使得同方向的其它Q进程得到路段LT而进入小路。此时共有四辆车在整个路径中,最终出现死锁状态。

某寺庙,有小、老和尚若干,有一水缸,由小和尚提水入缸(向缸

中倒水)供老和尚饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次只能容一个捅取水。水桶总数为3个。每次人、取缸水仅为1桶,且不可同时进行。试给出有关从缸中取水和向缸中倒水的算法描述。

解答:

应首先考虑清楚本题需要几个进程。从井中取水后向缸中倒水为连续动作,可算同一进程,从缸中取水为另一进程。

再考虑信号量.有关互斥的资源有水井(一次仅一个水桶进出)和水缸(一次入、取水为一桶),分别为之设信号量mutexl,mutex2控制互斥;

另有同步问题存在:三个水桶无论从井中取水还是人出水缸都是一次一个,应为之设信号量count,抢不到水桶的进程只好等待;还有水缸满时,不可人水,设信号量empty控制入水量.水缸空时不可出水,设信号量full,控制出水量。

mutexl:=1;mutex2:=1;empty:=10;full:=0; count:=3;

parbegin

入水: begin

Ll:P(empty);P(count);

P(mutexl);

从井中取水;V(mutext1);P(mutex2);

送入水缸;V(mutex2);V(count);V(full);GotoLl;End;

取水: begin

L2:P(full);

P(count);

P(mutex2);

从缸中取水;

V(mutex2);V(empty);V(count);GotoL2;End;

Parend.

桌子上有一只盘子,最多可容纳两个水果,每次只能放入或取出一个水果。爸爸专向盘子中放苹果(apple),妈妈专向盘子中放橘子

(orange),两个儿子专等吃盘子中的橘子,两个女儿专等吃盘子中的苹果。请用P,V操作来实现爸爸、妈妈、儿子、女儿之间的同步

与互斥关系。

解答:

盘子为互斥资源,因可以放两个水果,empty初值为2;father放苹果前先看看有无空间,若有则抢盘子,放apple。后向女儿发信号(V(apple));mother放橘子前先看看有无空间,若有则

抢盘子,放橘子后向儿子发信号(V(orange));女儿先看有无苹果,若有则抢盘子,取走苹果后

文档评论(0)

mph + 关注
官方认证
内容提供者

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

认证主体上海谭台科技有限公司
IP属地上海
统一社会信用代码/组织机构代码
91310115MA7CY11Y3K

1亿VIP精品文档

相关文档