OS7(管程通信线程).ppt

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

3.3.4 管程 ( P55) 1、管程的基本概念 2、利用管程解决PC问题 3、管程和进程的异同点 1、管程的概念 1)管程的引入 互斥手段(测试和设置命令,P,V操作)的不足: 由用户编写控制代码:加重了用户负担! P,V操作分散在用户程序中,系统无法有效地控制和管理; 用户编程时若使用P,V操作不当,后果严重(死锁) 基于以上情况,1971年DIjkstra提出了秘书“进程”机制。1973年Hansan和Hoare又将“秘书”进程思想发展为“管程”概念,把并发进程间的同步操作分别集中在相应的管程中。 2)管程概念 管程由若干公共变量及其说明和所有访问这些变量的过程组成. 管程把分散在各个进程中互斥地访问公共变量的那些临界区集中起来管理,管程的局部变量只能由该管程的过程存取. 进程只能互斥地调用管程中的过程 管程基本形式: (P56 管程由三部分构成) 3)条件变量 在管程机制中,引起进程等待的原因可能很多,为了区别他们,又引入了条件变量condition。 管程中对每个条件变量的说明形式为:Var x, y:condition。 X.wait:表示由于某种资源被占用而等待; X.signal:重新启动一个被阻塞的进程 问题: 当一个进入管程的进程执行等待操作时,它应当释放管程的互斥权;当一个进入管程的进程执行唤醒操作时(如P唤醒Q),管程中便存在两个同时处于活动状态的进程。解决方法: P等待,直到Q退出管程或等待另一个条件 Q等待,直到P退出管程或等待另一个条件 2、利用管程解决生产者消费者问题 首先建立管程,命名为Proclucer-Consumer(简称PC) 其中包括两个过程: (1) put(item)过程。生产者利用该过程将自己生产的产品投放到缓冲池中,并用整型变量count来表示在缓冲池中已有的产品数目,当count≥N时,表示缓冲池已满,生产者须等待。 (2) get(item)过程。消费者利用该过程从缓冲池中取出一个产品,当count≤0时,表示缓冲池中已无可取用的产品,消费者应等待。 2)管程描述 type producer-consumer=monitor var in,out,count:integer; buffer: array [0..n-1] of item; notfull, notempty: condition; procedure entry put(item) begin if count≥n then notfull.wait; One unit ?buffer; count:=count+1; if notempty.queue then notempty.signal; end procedure entry get(item) begin if count≤0 then notempty.wait; One unit ?buffer; count:=count-1; if notfull.quene then notfull.signal; end begin in:=out:=0; count:=0; end 3)生产者和消费者进程描述 producer:begin repeat produce an item in nextp; PC.put(item); until false; End consumer:begin repeat PC.get(item); consume the item in nextc; until false; end 3、 管程和进程的异同点 设置进程和管程的目的不同 系统管理数据结构 进程:PCB 管程:等待队列 管程被进程调用 管程是编程语言概念,编译器必须识别出管程,并用某种方式对互斥做出安排,只有少数的语言设有管程:Java,C#... 3.3.5 进程间通信 (P65) (IPC, INTER-PROCESS COMMUNICATION) 一个作业通常被分为若干个能并发执行的进程。 这些进程能以各自独立的速度向前推进,但它们应经常保持联系(通信),以便协调一致地(同步)完成指定任务。 进程联系就是在进程间传递数据。 进程间交换的数据分为2类: ⑴控制信息的传递,又称低级通信。一般只传递一个或几个字节的信息,以达到控制进程执行速度的作用。 ⑵大批量数据传递,又称高级通信。不是为控制进程的执行速度,而是为了交换信息。 1、低级通信和高级通信 2、高级通信的三种类型 管道通信 例1: 用C语言编写一个程序,建立一个pipe,同时父进程生成一个子进程,子进程向pipe 中写入一字符串,父进程从pipe中读取该字符串。 例2: 编写一程序,建立一个管道。同时,父进程生成了进程P1和P2,这两个子进程分别向管

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档