预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

进程同步算法补充作业 设有两个优先级相同的进程p1与p2,令信号量s1、s2的初值为0,已知z=2,试问p1、p2并发运行后x=?,y=?,z=? 进程p1:y=1;进程p2:x=1; y=y+2;x=x+1; signal(s1);wait(s1); z=y+1;x=x+y; wait(s2);signal(s2); y=z+y;z=z+x; 解: x=5,y=12,z=9②x=5,y=7,z=9③x=5,y=7,z=4 桌上有一只盘子,最多可以容纳两个水果,每次放入或取出一个水果。爸爸专向盘子中放苹果,妈妈专向盘子中放桔子,两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果。请用wait、signal操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。 解: Varmutex,s,a,o:semaphore:=1,2,0,0; Begin Parbegin Father:begin Repeat Wait(s); Wait(mutex); 向盘中放苹果; Signal(mutex) Signal(a); Untilfalse; End; Mother:begin Repeat Wait(s); Wait(mutex); 向盘中放桔子; Signal(mutex) Signal(o); Untilfalse; End; son:begin Repeat Wait(0); Wait(mutex); 取盘中桔子; Signal(mutex) Signal(s); 吃桔子; Untilfalse; End; daughten:begin Repeat Wait(a); Wait(mutex); 取盘中苹果; Signal(mutex) Signal(s); 吃苹果; Untilfalse; End; Parend; End. 某银行人民币储蓄业务由若干个柜员负责。每个顾客进入银行后先取一个号,并且等着叫号,当一个柜员空闲下来时,就叫下一个号,持该号的顾客被服务。试用wait、signal操作正确编写柜台人员进程和顾客进程的同步算法。 解: Varmutex,counter:semaphore:=1,0; Begin Parbegin Customer: Begin 取号码; Wait(mutex); 进入队列排队等候服务; Signal(mutex); Signal(counter); End; Servers: Begin Repeat Wait(counter); Wait(mutex); 从队列中取下一个号码; Signal(mutex); 为该号码持有者服务; Untilfalse End; Parend; End. 从甲地到乙地之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但中间有一个小的安全岛M(同时允许两辆自行车停留),可供两辆自行车已从两端进入小路情况下错车使用,试设计一个算法使来往的自行车均可顺利通过。 甲 M 乙 S T K L 解: Vars,t,sk,lt:semaphore:=1,1,1,1; Begin Parbegin Sk_lt:begin Repeat Wait(s); Wait(sk); 通过sk路段,进入安全岛M; Signal(sk); Wait(lt); 通过lt路段; Signal(lt); Wait(s); Untilfalse; End; Tl_ks:begin Repeat Wait(t); Wait(lt); 通过lt路段,进入安全岛M; Signal(l)t; Wait(sk); 通过sk路段; Signal(sk); Wait(t); Untilfalse; End; Parend; End.