实习5生产者-消费者问题实现.pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  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文档。上传文档
查看更多
实习5生产者-消费者问题实现

实验五 生产者-消费者问题实现 一、实习内容  二、实习目的  三、实习题目 四、实习总结 一、实习内容 模拟操作系统中进程同步和互斥。 二、实习目的 熟悉临界资源、信号量及PV操作的定义与物理意义 了解进程通信的方法 掌握进程互斥与进程同步的相关知识 掌握用信号量机制解决进程之间的同步与互斥问题 实现生产者-消费者问题,深刻理解进程同步问题 三、实习题目 在Linux操作系统下用C实现经典同步问题:生产者— 消费者,具体要求如下: (1)一个大小为10的缓冲区,初始状态为空。 (2)2个生产者,随机等待一段时间,往缓冲区中添加数 据,若缓冲区已满,等待消费者取走数据之后再添加,重 复10次。 (3)2个消费者,随机等待一段时间,从缓冲区中读取数 据,若缓冲区为空,等待生产者添加数据之后再读取,重 复10次。 提示 本实验的主要目的是模拟操作系统中进程同步和互斥。在 系统进程并发执行异步推进的过程中,由于资源共享和进程间 合作而造成进程间相互制约。进程间的相互制约有两种不同的 方式。 (1)间接制约。这是由于多个进程共享同一资源(如CPU 、共享输入/输出设备)而引起的,即共享资源的多个进程因 系统协调使用资源而相互制约。 (2)直接制约。只是由于进程合作中各个进程为完成同一 任务而造成的,即并发进程各自的执行结果互为对方的执行条 件,从而限制各个进程的执行速度。 生产者和消费者是经典的进程同步问题,在这个问题中 ,生产者不断的向缓冲区中写入数据,而消费者则从缓冲区 中读取数据。生产者进程和消费者对缓冲区的操作是互斥, 即当前只能有一个进程对这个缓冲区进行操作,生产者进入 操作缓冲区之前,先要看缓冲区是否已满,如果缓冲区已满 ,则它必须等待消费者进程将数据取出才能写入数据,同样 的,消费者进程从缓冲区读取数据之前,也要判断缓冲区是 否为空,如果为空,则必须等待生产者进程写入数据才能读 取数据。 在本实验中,进程之间要进行通信来操作同一缓冲区。 一般来说,进程间的通信根据通信内容可以划分为两种:即 控制信息的传送与大批量数据传送。有时,也把进程间控制 信息的交换称为低级通信,而把进程间大批量数据的交换称 为高级通信。 目前,计算机系统中用得比较普遍的高级通信机制可分 为3大类:共享存储器系统、消息传递系统及管道通信系统。 共享存储器系统 共享存储器系统为了传送大量数据,在存储器中划出一块 共享存储区,诸进程可通过对共享存储区进行读数据或写数 据以实现通信。进程在通信之前,向系统申请共享存储区中 的一个分区,并为它指定一个分区关键字。 消息传递系统 在消息传递系统中,进程间的数据交换以消息为单位, 在计算机网络中被称为报文。消息传递系统的实现方式又可 以分为以下两种: (1)直接通信方式 发送进程可将消息直接发送给接收进程,即将消息挂在 接收进程的消息缓冲队列上,而接收进程可从自己的消息缓 冲队列中取得消息。 (2)间接通信方式 发送进程将消息发送到指定的信箱中,而接收进程从信 箱中取得消息。这种通信方式又称信箱通信方式,被广泛地 应用于计算机网络中。相应地,该消息传递系统被称为电子 邮件系统。 管道通信系统 向管道提供输入的发送进程,以字符流方式将大量的数 据送入管道,而接收进程从管道中接收数据。由于发送进程 和接收进程是利用管道进行通信的,故称为管道通信。 为了协调发送和接收双方的通信,管道通信机制必须提 供以下3方面的协调功能。 (1)互斥 当一个进程正在对pipe文件进行读或写操作时,另一个 进程必须等待。 (2)同步 当写进程把一定数量的数据写入pipe文件后,便阻塞等 待,直到读进程取走数据后,再把写进程唤醒。 (3)确认对方是否存在 只有确定对方已存在时,才能进行管道通信,否则会造 成因对方不存在而无限制地等待。 在这个问题当中,我们采用信号量机制进行进程之间的 通信,设置两个信号量,空的信号量和满的信号量。 在Linux系统中,一个或多个信号量构成一个信号量集合 。使用信号量机制可以实现进程之间的同步和互斥,允许并 发进程一次对一组信号量进行相同或不同的操作。每个P、V 操作不限于减1或加1,而是可以加减任何整数。在进程终止 时,系统可根据需要自动消除所有被进程操作过的信号量的 影响 1.缓冲区采用循环队列表示,利用头、尾指针来存放、 读取数据,以及判断

文档评论(0)

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

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

1亿VIP精品文档

相关文档