操作系统ppt课件第3章精品.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统ppt课件第3章精品

3.5.1 带信号量的管程 管程最主要的特点如下: 只能通过管程中的过程而不能用其他外部过程访问其局部数据变量。 进程通过调用管程的过程而进入管程。 每一时刻只能有一个进程在管程中执行,任何其他调用管程的进程将被挂起直至管程可用为止。 3.5.2 用管程解决生产者/消费者问题 管程模块控制着缓冲区。管程包括两个条件变量:当缓冲区中还有空位置时,变量notfull为true,如果缓冲区中至少有一个字符存在,则变量notempty为true。生产者只能通过管程中的过程append向缓冲区添加字符,生产者不能直接访问缓冲区。这个例子比较了管程和信号量。 3.6 消息传递 进程间的相互作用必须满足两个条件:同步和通信,进程需要同步来实现互斥,进程间的协同需要交换信息,一个能解决上述两个问题的方法是消息传递(message passing)。消息传递还有一个优点是,它的适应性很强,能在分布式系统、共享存储器的多处理机系统以及单处理机系统等不同系统中实现。 3.6.1 消息传递原语 原语: ·send (destination, message) ·receive (source, message) 3.6.2 用消息传递实现同步 无论是发送方还是接收方都可能被阻塞。下面有三种最一般的组合,任何特定系统都实现了其中的一种或两种: 阻塞发送,阻塞接收。 无阻塞发送,阻塞接收。 无阻塞发送,无阻塞接收。 3.6.3 寻址方式 1. 直接寻址 对直接寻址方式,send原语中明确标明了目的进程。receive原语有两种方式:第一种方式接收进程预先知道发送消息的源进程,另一种方式则不可能预先知道源进程。 3.6.3 寻址方式 2. 间接寻址 消息不直接由发送方传给接收方,而是通过一个共享的数据结构,包括临时存放消息的队列(邮箱式端口)。这种方法有很大的灵活性。进程与邮箱的关系可以是静态的或动态的,端口通常与一个特定的进程相关联。端口通常由接收进程产生并为其所有。 3.6.4 消息格式 消息格式依赖于消息系统的用途和消息系统是在单个计算机上运行还是在分布式系统中运行,一些操作系统选择了较短的定长消息以减小处理和存储的开销,如果有大量的数据需要传递,那么可以将数据存入文件并把文件作为消息传递,一种更为灵活的方法是允许变长消息。 3.6.4 消息格式 支持变长消息的操作系统中的消息格式 3.6.5 排队规则 最简单的排队规则是先进先出,但这远远不够。一个改进的方法是由发送方或接收方基于消息的类型标明消息的优先权;另一个改进方法是允许接收方检查消息队列并选择要接收的消息。 3.6.6 用消息传递实现互斥 假设使用阻塞receive原语和无阻塞send原语,并发进程集共享一个邮箱mutex,将邮箱初始化为仅包含一个空消息,欲进入临界段的进程首先要接收相应的消息,如果邮箱为空则该进程被阻塞,一旦进程得到消息它就执行其临界段,然后再将消息放回邮箱,这样消息就如同令牌一样在进程之间传递。 3.6.6 用消息传递实现互斥 这种解决方法是,假设有多于一个进程并发执行receive操作,则有: ·如果仅有一个消息,那么它只可传递给一个进程,其他进程将被阻塞。 ·如果邮箱为空,则所有的进程将被阻塞。当消息可用时,仅有一个阻塞进程被激活并得到消息。 3.6.6 用消息传递实现互斥 使用消息传递所支持的互斥和信号量不具备传递数据的能力可以解决带有界缓冲区的生产者/消费者问题。 这个方法非常灵活,可以允许有多个生产者和消费者,系统还可以是分布式的。 3.7 读者/写者问题 Readers/writers问题的定义如下:一些进程共享一个数据区。数据区可以是一个文件、一块内存空间或一组寄存器。readers进程只能读数据区中的数据,而writers进程只能写。所谓读者/写者问题就是指保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题。 3.7 读者/写者问题 解决该问题必须满足的条件如下: 任意多个readers可以同时读; 任一时刻只能有一个writers可以写; 如果writers正在写,那么readers就不能读。 3.7.1 读者优先 信号量wsem用来实现互斥,只要有writer在访问共享数据区,其他writers或readers就不能访问数据区。reader进程同样利用wsem实现互斥。为了适用于多个reader,当没有reader读时,第一个进行读的reader要测试wsem,当已经有reader在读时,随后的reader无须等待就可读取数据区。 一旦有一个reader访问数据区,只要还有一个re

文档评论(0)

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

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

1亿VIP精品文档

相关文档