pv操作习题

pv操作习题

ID:47487404

大小:82.50 KB

页数:10页

时间:2020-01-12

pv操作习题_第1页
pv操作习题_第2页
pv操作习题_第3页
pv操作习题_第4页
pv操作习题_第5页
资源描述:

《pv操作习题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、设一民航售票系统有n个售票处。每个售票处通过终端访问系统中的公用数据区,假定公用数据区中分别用R1、R2、R3、…Rn表示×月×日×次航班的现存票数。设P1、P2、P3、Pn表示各售票处的处理进程,试用信号量实现进程间的互斥关系Vars:semaphore:=1;beginparbeginprocessPi:beginrepeatWait(s);按旅客定票要求找到RkifRk>=1thenbeginRk=Rk-1;Signal(s);输出一张票;end;elsebeginSignal(s);输出“票已售完”;end;untilfalse;endparendend生产围棋的工人

2、不小心把相等数量的黑子和白子混装在一个箱子里,现要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程组成,功能如下:(1)进程A专门拣黑子,进程B专门拣白子;(2)每个进程每次只拣一个子,当一个进程在拣子时不允许另一个进程去拣子;s:semaphore:=1;   parbegin    processA:begin    L1:Wait(s);     拣黑子;     Signal(s);     gotoL1;    end;    processB:begin    L2:Wait(s);     拣白子;     Signal(s);     gotoL2;

3、    end;   parend;某车站售票厅共有20个售票窗口,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待。每个购票者可看成一个进程。s:semaphore=20;  parbegin   processPi(i=1,2,……)    beginWait(s);     进入售票厅;     购票;     退出;     Signal(s);    end;   parend有座东西方向架设、可双向通行的单车道简易桥,最大负荷为4辆汽车。请定义合适的信号量,正确使用wait/signal操作,实现双向车辆

4、的过桥过程。信号量应该有4个:S,初值为1,代表桥的互斥使用的信号量;Scounteast,初值为1,代表由东向西行驶的桥上的车辆计数器的互斥使用;Scountwest,初值为1,代表由西向东行驶的桥上的车辆计数器的互斥使用;Scount4,初值为4,代表桥上车辆的计数信号量。varS,Scounteast,Scounwest,Scount4:semaphore;S:=1;Scounteast=1;Scountwest:=1;Scount4:=4;Counteast,Countwest:integer;Counteast:=0;Countwest:=0;Cobegin,pro

5、cesseast(i)beginP(Scounteast);ifCounteast=0thenP(S);Counteast:=Counteast+l;V(Scounteast);P(Scount4);上桥:过桥:下桥;V(Scount4);P(Scounteast);Counteast:=Counteast-1;ifCounteast=0thenV(S);V(Scounteast);end;processwest(i)beginP(Scountwest);ifCountwest=0thenP(S);Countwest:=Countwest+1;V(Scountwest);P(

6、Scount4);上桥;过桥:下桥:V(Scount4);P(Scountwest);Countwest:=Countwest-l;ifCountwest=0thenV(S);V(Scountwest);end;Coend有一单向行驶的公路桥,每次只允许一辆汽车通过。当汽车到达桥头时,若桥上无车,便可上桥;否则需等待,直到桥上的汽车下桥为止,若每一辆汽车为一个进程,请用Wait、Signal操作原语保证汽车按要求过桥。汽车进程:Pi(i=1,2,3,…)到达桥头;P(S);上桥行驶;到达桥另一端;V(S);某超市门口为顾客准备了100辆手推车,每位顾客在进去买东西时取一辆推车

7、,在买完东西结完帐以后再把推车还回去。试用Wait/Signal操作正确实现顾客进程的同步互斥关系。semaphoreS_CartNum=100;//空闲的手推车数量,初值为100voidconsumer(void)//顾客进程{Wait(S_CartNum);买东西;结帐;Signal(S_CartNum);}桌子上有一个水果盘,每一次可以往里面放入一个水果。爸爸专向盘子中放苹果,儿子专等吃盘子中的苹果。把爸爸、儿子看作二个进程,试用Wait/Signal操作使这四个进程能正确地并发执行。nsemap

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。