操作系统进程管理 (2).pptVIP

  1. 1、本文档共125页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
var mutex, empty, full: semaphore:=1,1,0 2.5.1管程的基本概念 入口等待队列:因为管程是互斥进入的,所以当一个进程试图进入一个已被占用的管程时它应当在管程的入口处等待,因而在管程的入口处应当有一个进程等待队列,称作入口等待队列 紧急等待队列:如果进程P唤醒进程Q,则P等待Q继续,如果进程Q在执行时又唤醒进程R,则Q等待R继续,...,如此,在管程内部,由于执行唤醒操作,可能会出现多个等待进程(因唤醒其它进程而自己被阻塞的进程),因而还需要有一个进程等待队列,这个等待队列被称为紧急等待队列。它的优先级应当高于入口等待队列的优先级 内部等待队列:var c: condition; 可根据需要定义多个,用于设置等待条件 管程与进程比较 管程定义的是公用数据结构,而进程定义的是私有数据结构 管程把共享变量上的同步操作集中起来,而临界区却分散在每个进程中 管程是为管理共享资源而建立的,进程是为占有系统资源和实现系统并发性而引入的 管程是被欲使用共享资源的进程所调用的,管程和调用它的进程不能并行工作,而进程之间能并行工作,并发性是其固有特性 管程是语言或操作系统的成分,不必创建或撤销,而进程有生命周期,由创建而产生至撤销便消亡 2.5.2 用管程机制解决生产者—消费者问题 建立Producer-consumer(PC)管程 Type producer-consumer=monitor var in,out,count:integer; buffer:array[0,…,n-1] of item; full, empty: condition; put(item); get(item); begin in:=out:=0; /* 初始化代码*/ count:=0; end 管程中的两个条件变量: (1)缓冲区中不全满,该变量为真; (2)empty 当缓冲区中不全空,该变量为真。 2.5.2 用管程机制解决生产者—消费者问题 建立Producer-consumer(PC)管程 Put(item)过程 生产者利用此过程将自已的消息放到缓冲池中,若发现缓冲已满(count n),则等待 Get(item)过程 消费者利用此过程将缓冲池中的消息取走,若发现缓冲已空(count 0),则等待 put(item) Procedure entry put(item) begin if count ≧n then full.wait; buffer(in):=nextp; in:=(in+1) mod n; count:=count+1; if empty.queue then empty.signal; end get(item) Procedure entry get(item) begin if count≦0 then empty.wait; nextc:=buffer(out); out:=(out+1) mod n; count:=count-1; if full.queue then full.signal; end 2.5.2 用管程机制解决生产者—消费者问题 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 概念 进程间的信息交换 实例: 信号量机制(一种低级通信) 缺点:(1)效率低 (2)通信对用户不透明 高级通信特点 效率高,通信

文档评论(0)

nuvem + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档