- 1、本文档共87页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 如果生产者和消费者共享的缓冲池容量为可以存放n件物品(n1)。 由于缓冲器可存n件物品,因此,必须指出缓冲器中什么位置已有物品可供消费,什么位置尚无物品可供生产者存放物品。可以用输入指针in和输出指针out分别指示生产者往缓冲器存物品和消费者从缓冲器取物品的相对位置,它们的初值为0,生产者和消费者按位置的顺序去存物品和取物品,缓冲池被循环使用。 每当生产进程生产并投放一个产品后,输入指针加1,由于缓冲池循环使用,可表示为: in:=(in+1)mod n ; 每当消费者进程取走一个产品后,输出指针加1,由于缓冲池循环使用,可表示为:out:=(out+1)mod n ; * 当(in+1)mod n =out 时,表示缓冲池满; 当in = out 时 ,表示缓冲池空; 局部变量nextp:生产者用于暂时存放刚生产出的产品; 局部变量nextc:消费者暂时存放要消费的产品; * 生产者消费者问题 生产者生产的产品放入缓冲池内; 消费者从缓冲池内取走产品消费; 消费者消费后的空白缓冲区供生产者使用。 规则: 有空的buffer时生产者便可将产品送入缓冲池。 有满的buffer时消费者可从中取走产品。 消费者与生产者互斥地访问缓冲区。 * 生产者消费者算法分析 算法分析 两类进程:生产者进程和消费者进程 (1)进程间的关系 生产者生产产品后消费者消费 消费者消费后的空白缓冲块由生产者存放产品 两个进程在使用缓冲区时的关系 合作关系 互斥关系 * 生产者消费者算法分析 信号量 full:缓冲池中满缓冲区的数量 empty:缓冲池中空缓冲区的数量 mutex:实现各进程对缓冲池的互斥使用 * 利用记录型信号量实现 Var mutex,empty,full :semaphore :=1,n,0 ; buffer : array [0,……,n-1] of item ; in , out : integer := 0, 0 producer : begin repeat produce an item nextp; P( empty ); P( mutex ); Buffer( in ) :=nextp; In :=(in+1) mod n; V( mutex ); V( full ); Until false; end consumer : begin repeat P( full ); P( mutex ); nextc :=buffer( out); out :=(out+1) mod n; V( mutex ); V(empty); consumer the item in nextc; Until false; end * P操作的顺序是很重要的,如果把生产者和消费者进程中的两个P操作交换顺序,则会导致错误。而V操作的顺序却是无关紧要的。一般来说,用于同步的信号量上的P操作在前执行,而用于互斥的信号量上的P操作在后执行。 * 利用AND型信号量实现 Producer: produce an item nextp; P(empty,mutex) Buffer(in) :=nextp; In :=(in+1) mod n; V(mutex,full); consumer : P(full, mutex); nextc := buffer(out); out :=(out+1) mod n; V(mutex,empty); Consumer the item in nextc; 用P(empty,mutex)代替p(empty); 和 p( mutex ); * 生产者消费者算法小结 小结: 在分析进程同步问题中,逐个分析进程间的关系是关键 不管多复杂的关系,总能归结为两种基本关系(竞争与合作),总是这两种关系的组合 不管公用还是私用,信号量的使用必须成对出现 * 和尚打水问题 某寺庙有小、老和尚若干,有一水缸,由小和尚提水入缸供老和尚饮用。水缸可以容纳10桶水,水取自同一井水。水井狭窄,每次只能容一个桶取水。水桶总数为3个
您可能关注的文档
最近下载
- 广东省广州市南沙区2021-2022学年七年级下学期期末教学质量检测生物试卷.docx VIP
- 河南省永丰化工科技有限公司年产2400吨橡胶促进剂dpg、500吨tbztd、1200吨硫氢化钠(70%)、5000吨氟化氢铵、2000吨氟化钾、3000吨氟化铵、6000吨r32制冷剂、25000吨盐酸、1000吨氢氟酸(50%电子级)新建项目.doc VIP
- DB64_T 1019-2023 建(构)筑物消防设施维护保养技术规范.docx
- 中考物理专题11测电阻——伏安法、伏阻法(解析版).docx VIP
- 农村私人土地永久转让协议书范本(4篇).docx VIP
- 2024江西上饶市信州区消防救援大队政府专职文员招录笔试模拟试题及答案解析.docx VIP
- 急性化脓性扁桃体炎病历模板范文成人.docx VIP
- 青海西宁市辅警考试真题(含答案).pdf VIP
- 美国着名汉学家德克·卜德中国物品西传考摘译.pdf VIP
- 2025航天知识竞赛考试题库资料(含答案).pdf VIP
文档评论(0)