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

04第四章+互斥同步与通讯.ppt

  1. 1、本文档共196页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
条件临界区 实现互斥 region v when true do s CCR与PV操作的等价性(证明从略) 用CCR可以实现PV操作 用PV操作可以实现CCR P.B.Hansen设计的Edison语言提供了CCR同步机制. 例4-6 简单批处理 由作业读入、执行、打印结果三个相对独立的部分组成,显然三者需要同步,用条件临界区实现的程序如下: PROGRAM batch; TYPE buffer=RECORD slots: ARRAY[0..n-1]of T; head,tail: 0..n-1 initial (0,0); size: 0..n initial (0); END; VAR inbuff: buffer(cardimage); outbuff: buffer(lineimage); RESOURCE ib: inbuff; ob: outbuff; 例4-6 简单批处理 COBEGIN PROCESS reader; VAR card: cardimage LOOP Read card from cardreader; REGION ib WHEN inbuff.sizen DO inbuff.slots[inbuff.tail]:=card; inbuff.size := inbuff.size+1; inbuff.tail := (inbuff.tail+1) MOD n; ENDDO ENDLOOP ENDPROCESS 例4-6 简单批处理 PROCESS executer; VAR card:cardimage; line:lineimage; LOOP REGION ib WHEN inbuff.size0 DO card := inbuff.slots[inbuff.head]; inbuff.size := inbuff.size-1; inbuff.head := (inbuff.head+1)MOD n ENDDO Process card and generate line REGION ob WHEN outbuff.sizen DO outbuff.slots[outbuff.tail] := line; outbuff.size := outbuff.size+1; outbuff.tail := (outbuff.tail+1)MOD n; ENDDO ENDLOOP ENDPROCESS 例4-6 简单批处理 PROCESS printer; VAR line:lineimage; LOOP REGION ob WHEN outbuff.size0 DO line := outbuff.slots[outbuff.head]; outbuff.size := outbuff.size-1; outbuff.head := (outbuff.head+1)MOD n; ENDDO Print line on lineprinter; ENDLOOP ENDPROCESS COEND. 条件临界区的实现效率问题 region r when b do s 条件临界区的实现效率是比较低的 这主要是条件表达式b的计算,由于b中可能包含进程局部信息,每个欲进入条件临界区的进程必须自己计算b的值(而不能由调度程序统一计算). 因为进入条件临界区必须同时满足互斥和b为真两个条件,任何一个条件不满足都将使进程等待,这样在条件临界区的入口处会形成一个等待队列. 当处于条件临界区内的进程执行完s后,全局变量条件发生变

文档评论(0)

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

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

1亿VIP精品文档

相关文档