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

操作系统(第4章4-1-6,4-2).ppt

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

3 利用管程解决哲学家进餐问题 哲学家处于这样三种状态之一:即进餐、饥饿和思考。 引入数据结构: enum status{ thinking, hungry, eating }; enum status state[5]; 为每位哲学家设置一个条件变量self(i),当哲学家饥饿,又不能获得进餐所需的筷子时,执行self(i).wait操作推迟进餐。条件变量可描述为: condition self[5]; 在管程中还设置了三个过程: ①pickup(int i)过程。在哲学家进程中,可利用该过程去进餐。如某哲学家是处于饥饿状态,且他的左、右两个哲学家都未进餐时,便允许这位哲学家进餐;只要其左、右两位哲学家中有一位正在进餐时,便不允许该哲学家进餐,此时将执行self(i).wait操作来推迟自己进餐。   ②putdown(int i)过程。当哲学家进餐毕,看他左、右两边的哲学家,如果饥饿且他左、右两边的哲学家都未用餐时,便可让他们进餐。 ③test(int i)过程。该过程为测试过程,用它去测试哲学家是否已具备用餐条件,即state[i-1 mod 5]≠eating state[i]=hungry and state[i+1 mod 5]≠eating条件表达式值是否为1。若为1,允许该哲学家进餐。该过程将被pickup和putdown两过程所调用。 用于解决哲学家进餐问题的管程描述如下: 管程与进程的不同点 设置进程和管程的目的不同 从系统管理数据结构角度: 管理进程用PCB,管理管程用等待队列; 管程是被进程调用的: 管程是操作系统的固有成分,无创建和 撤消 管程是进程同步方面的重要进展 使进程本身不存在直接共享问题。 进程之间的信息交换称为进程通信。 进程通信的类型: 低级通信:归结为进程之间的互斥和同步,一般只传送少量信息(信号量)。 缺点:效率低,通信对用户不透明。 高级通信:能够高效传输大量数据的通信方式。又分为三类:共享存储器系统、消息传递系统、管道通信系统。 1. 共享存储器系统 2. 消息传递系统 3. 管道(Pipe)通信系统 4.2.3 消息缓冲队列通信机制 (1)消息缓冲区的数据结构 struct message_buffer{ sender; // 发送者进程标识符 size; // 消息长度 text; // 消息正文 next; // 指向下一个消息缓冲区的指针 }; (2)PCB中有关通信的数据项 struct processcontrol_block{ … mq; // 消息队列队首指针 mutex; // 消息队列互斥信号量 sm; // 消息队列资源信号量 … }; 2. 用P、V操作来实现Send原语 3. 用P、V操作来实现Receive原语 * 第4章 进程同步与通信 4.1.6 管 程 机 制 1 管程的基本概念 2 利用管程解决生产者-消费者问题 3 利用管程解决哲学家进餐问题 1 管程的基本概念 为什么引入管程? 把分散在各进程中的临界区集中起来进行管理; 防止进程有意或无意的违法同步操作; 便于用高级语言来书写程序,也便于程序正确性验证。 管程的基本概念: 一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。 monitor monitor-name{ variable declartions //变量声明 entry p1(...) //内部过程p1 {...} entry p2(...) {...} ... entry pn(...) {...} { initialazation code //初始化代码 } }; 管程的语法 局部于管程的共享变量说明 对

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档