pv原语练习题带答案_第1页
pv原语练习题带答案_第2页
pv原语练习题带答案_第3页
pv原语练习题带答案_第4页
pv原语练习题带答案_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——pv原语练习题带答案

12、在一个仅允许单向行驶的单排车道十字路口,只允许车辆从南向北和从西向东行驶,如图8.1所示;为了安全起见,每次仅允许一辆汽车通过十字路口;当有车辆通过路口时其它车辆必需等待,当无车辆在路口行驶时则一次仅允许一辆汽车通过。请用P、V原语及信号量实现十字路口的交通控制系统,并描述具体的控制算法。

图8.1允许单向行驶的单排车道十字路

答:设一信号量sem表示是否允许汽车通过,初值为1,表示允许汽车通过。设入口检测进程procedurein,出口检测进程procedureout,它们的描述如下:procedurein()begin

L1:检测到有一辆车要进入路口P(sem)

允许进入路口gotoL1

end

procedureout()begin

L2:检测到有一辆车驶出路口V(sem)gotoL2

end

13、设存在三个过程get、copy和put分别对缓冲区S和T进行操作,其中get负责将数据块存入缓冲区S,copy负责从缓冲区S读出数据并复制到缓冲区T中,put负责从缓冲区T中读出数据并打印,如图8.2所示。请用P、V操作描述上述三个过程。

putgetcopy缓冲区S缓冲区T图8.2输入—缓冲—输出问

答:设信号量SGC表示缓冲区S是否允许放数据,值为1时表示允许,初值为1;信号量SCG表示缓冲区S是否允许取数据,值为1时表示允许,初值为0;信号量SCP表示缓冲区T是否允许放数据,值为1时表示允许,初值为1;信号量SPC表示缓冲区T是否允许取数据,值为1时表示允许,初值为0。进程get、copy和put描述如下:get()

begin

L1:取存入缓冲区S的数据x

P(SGC)

把数据x存入缓冲区S中V(SCG)gotoL1

endcopy()

begin

L2:P(SCG)

把缓冲区S的数据存入x中V(SGC)P(SCP)

把数据x要存入缓冲区T中V(SPC)gotoL2endput()

begin

L3:P(SPC)

把缓冲区T的数据存入x中V(SCP)打印数据xgotoL3

end

14、烟—吸烟者问题。考虑一个系统有三个吸烟者进程和一个代理进程。每个吸烟者持续不停地卷烟和吸烟。但是为了卷烟和吸烟,吸烟者必需同时拥有三种材料:烟丝、卷烟纸和火柴;三个吸烟者分别拥有其中的一种。代理可以提供足够的三种材料,但每次仅将两种不同的材料放在桌子上供吸烟者使用。手中拥有一种材料的吸烟者要卷烟和吸烟时就向代理发信号,代理然后将所需要的两种材料放在桌子上;如此循环重复这个过程。请写出代理和吸烟者间的同步算法。

答:设信号量S[i](i=1,2,3)表示第i个吸烟者是否提出请求,其值为1时表示提出请求,初值为1;SP表示桌上是否可以放材料,其值为1时表示提出请求,初值为1;ST[i](i=1,2,3)表示是否放了第i个吸烟者所需的材料。三个吸烟者进程smoker[i]和一个代理进程agent描述如下:agent()

begin

L1:P(S[i])

P(SP)

ifi==1then烟丝和卷烟纸

elseifi==2then烟丝和火柴

else卷烟纸和火柴

V(ST[i])gotoL1

endsmoker[i]()

begin

L2:P(ST[i])

取所需的材料V(SP)卷烟吸烟

V(S[i])gotoL2

end

15、请用算法描述读者和写者问题。

答:设共享变量count表示读者数量,初值为0;信号量SP表示是否允许读或写,其值为1时允许读或写,初值为1;SC表示是否可以使用共享变量COUNT,其值为1时表示可以使用,初值为1;读者进程reader和写者进程writer的描述如下:描述1:用P、V操作描述。reader()

begin

L1:P(SC)

ifcount==0thenP(SP)count=count+1V(SC)进行读P(SC)

count=count-1

ifcount==0thenV(SP)V(SC)gotoL1

endwriter()

begin

L2:P(SP)

进行写V(SP)gotoL2

end

描述2:用signal、wait操作描述。reader()

begin

L1:wait(SC)

ifcount==0thenwait(SP)count=count+1signal(SC)进行读

wait(SC)count=count-1

ifcount==0thensignal(SP)signal(SC)gotoL1

endwriter()

begin

L2:wait(SP)

进行写

signal(SP)gotoL2

end

16、有一材料保管员,负责管理笔和纸。另有A、B两组学生,A组学生每人手中都备有纸,而B组学生每人手中都备有笔,任一学生只要能得到其它一种材料就可以写信。有一个可以放一张纸或一支笔的小盒,当小盒为空时,保管员就可以任意放一张纸或一只笔供学生使用。当小盒中有物时,每次仅允许一个学生从中取出。假设管理员手中所拥有的笔和纸的数量等于A、B两组学生各自所需要的总数,请用信号量描述上述过程。

答:设信号量SP表示小盒里是否允许放纸或笔,其值为1表示允许放纸或笔,初值为1;SA表示A组学生是否从允许取盒子中笔,其值为1表示允许取笔,初值为0;SB表示B组学生是否允许从取盒子中纸,其值为1表示允许取纸,初值为0。保管员P,A、B两组学生的进程描述如下:保管员P()

begin

L1:P(SP)

把纸或笔放入盒子中

if放入的是纸thenV(SB)

elseV(SA)

gotoL1

end

A组学生()

begin

L2:P(SA)

取盒子中的笔V(SP)gotoL2

end

B组学生()

begin

L3:P(SB)

取盒子中的纸V(SP)gotoL3

end

17、A、B两人共同使用一个报箱,该报箱每次仅能容纳一份报纸。A订阅《生活报》,B订阅《晚报》,分别由投递员C和D投递。请用P、V操作描述他们的同步程序。

答;设信号量SP,表示信箱是否允许放报纸,值为1时表示允许放报纸,初值为1;信号量SA,表示信箱中是否有生活报,值为1时表示有,初值为0;信号量SB,表示信箱中是否有晚报,值为1时表示有,初值为0。投递员C、D和A、B两人的进程描述如下:

A()begin

L3:P(SA)取《生活报》V(SP)gotoL3EndB()begin

L4:P(SB)取《晚报》V(SP)gotoL4endC()begin

L1:P(SP)

把《生活报》放入报箱V(SA)gotoL1endD()begin

L2:P(SP)

把《晚报》放入报箱V(SB)gotoL2end

22、有6位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论