网站大量收购闲置独家精品文档,联系QQ:2885784924

4并发处理-2.ppt

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

要保证打印结果的正确,CP、IOP必须遵循以下同步规则: (1)当CP把结果送入buffer后,IOP才能从buffer中取,否则IOP必须等待; (2)当IOP从buffer中取走数据后,CP才能将新产生数据送buffer,否则也必须等待。 解决这个问题的步骤: (1)分析问题,弄清楚同步关系,如上分析; (2)设置信号灯,说明含义、初值; (3)写出程序描述。 病人就诊的例子 医生给病人看病活动: … 要病人去化验; … 等化验结果; … 继续诊病; 化验员化验活动: … 等医生开出化验单; … 进行化验; 开出化验单; … 等待 等待 唤醒后 唤醒后 Int S2=0 int S1=0 医生 化验员 While (看病工作未完成) { 看病; V(S1); P(S2) 诊断; } While (化验工作未完成) { P(S1); 化验工作; V(S2); } 用PV操作解决下面问题: 桌上有一空盘,允许存放一只水果.爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子女儿专等吃盘中的苹果.规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步. 1)所用信号量设置如下: 同步信号量empty,初值为1,表示盘子是空的,即儿子或女儿已把盘中的水果取走。 同步信号量orange,初值为0,表示爸爸尚未把桔子放入盘中。 同步信号量apple,初值为0,表示爸爸尚未把苹果放入盘中。 (2)使用信号量机制的三个进程同步描述如下: 爸爸进程 儿子进程 女儿进程 P(empty) P(orange); P(apple) ; 将水果放入盘中; 从盘中取出桔子; 从盘中取出苹果; 若放入的是桔子; V(empty); V(empty); 则V(orange) 吃桔子; 吃苹果; 否则,V(apple); c. 多生产者-多消费者问题 我们把上面的例子扩充,假定缓冲区buffer是一个有界缓冲区,可存放n个数据,同时假定有n个CP进程不断地产生数据,并送buffer;有m个IOP进程从缓冲区中取数据打印。 在我们生活中有很多这样的例子。 生产者-消费者问题 对于生产者进程:产生一个数据,当要送入缓冲区时,要检查缓冲区是否已满,若未满,则可将数据送入缓冲区,并通知消费者进程;否则,等待; 对于消费者进程:当它去取数据时,要看缓冲区中是否有数据可取,若有则取走一个数据,并通知生产者进程,否则,等待。 这种相互等待,并互通信息就是典型的进程同步。 同时,缓冲区是个临界资源,因此,诸进程对缓冲区的操作程序是一个共享临界区,因此,还有个互斥的问题。 生产者-消费者问题 多生产者-多消费者问题(多缓冲区) * 设A,B两点之间是一段东西向的单行车道,现在要设计一个AB路段自动管理系统,规则如下:当AB间有车辆在行驶时同方向的车可以驶入,另一方向的车必须等待;当AB段落无车辆行驶时,任一方向的车可驶入,但不能从两个方向同时驶入,当某方向在AB段行驶的车辆驶出了AB段落且暂无车辆进入AB段落时,应让另一方向等待的车辆进入,试用信号量和P、V操作实现。 if count=0 P(S) count=count+1 车辆从A点通过AB路段到达B点 count=count-1 if count=0 v(S) 进程1:if count=0 P(S) 程2: if count=0 P(S)

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档