- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程同步与通信
进程同步与通信 复习一 1、两个并发进程的程序如下: begin N:integer; N:=3; cobegin process A begin L1:N:=N+5 goto L1 end 若process A先执行三个循环后,process A和process B又并发执行了一个循环,写出可能出现的打印值。正确的打印值是多少?请用PV操作进行管理,使它们并发执行时不出现与时间有关的错误。 begin N:integer; N:=3 s:semaphore; s:=1 cobegin process A begin L1:P(S); N:=N+5; V(S); goto L1 endl; 2、a,b两点之间是一段东西向的单行车道,现要设计一个管理系统,管理规则如下: ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在ab段外等待;当ab之间没有车辆行驶时,到达a点(或b点)的车辆可以进入ab段,但不能从a点或b点同时驶入;当某方向在ab段行驶的车辆驶出了ab段且暂无车辆进入ab段时,应该让另一方向等的车辆进入ab段行驶。请用pv操作作为工具,对ab段实现正确管理以保证行驶安全。 解:本题类似于读者和写者的问题,相当于两组读者使用同一个共享文件的互斥问题。对于a,b两端的共享车辆计数器ca和cb分别设两个信号量sa和sb,对共享资源ab段设一个信号量sab。所设计的程序段如下: begin sab,sa,sb:semaphore; ca,cb:integer; sab:=1;sa:=1;sb:=1; cobegin process Ai(i=1,2,…) begin p(sa); ca:=ca+1; if ca=1 then p(sab); v(sa); {车辆从a端驶入ab段} process Bi(i=1,2,…) begin p(sb); cb:=cb+1; if cb=1 then p(sab); v(sb); {车辆从b端驶入ab段} 3、今有3个并发进程R,M,P,它们共享一个缓冲器B。进程R负责从输入设备读信息,每读出一个记录后把它存放到缓冲器B中。进程M在缓冲器B中加工进程R存入记录。进程P把加工后的记录打印输出。缓冲器B中每次只能存放一个记录,当记录被加工输出后,缓冲器B中又可存放一个新记录。请用PV操作为同步机制写出它们并发执行时能正确工作的程序。 解:此题类似与生产者和消费者问题。 设立3个信号量:sr表示是否可以把读入的记录存入缓冲器,初值为1;sm表示缓冲器中是否有记录需要加工,初值为0;sp表示缓冲器是否有已加工好的记录需要打印,初值为0. begin buffer:记录类型; sr,sm,sp:semaphore; sr:=1;sm:=0;sp:=0; cobegin process R begin L1:read a record; p(sr); buffer:=record; v(sm); goto L1 end; 4、假设有一个成品仓库,总共能存放8太成品,生产者进程生产产品放入仓库,消费者进程从仓库中取出成品消费。为了防止积压,仓库满的时候就停止生产。由于仓库搬运设备只有一套,故成品存入和取出只能分别进行,使用PV操作来实现该方案。 begin mutex,full,empty:semaphore; mutex:=1; empty:=8; full:=0; cobegin pricess producer begin 生产一个产品; p(empty); p(mutex); 将产品存入仓库; v(mutex); v(full); end; 5、一条小河上有一座独木桥,规定每次只允许一个过桥。现河东和河西都有相等的人数在等待过桥,为
文档评论(0)