电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

试验三:生产者与消费者

试验三:生产者与消费者_第1页
1/13
试验三:生产者与消费者_第2页
2/13
试验三:生产者与消费者_第3页
3/13
实验三:生产者与消费者一、 实验目的1.学习和掌握操作系统中进程之间的通信;2.理解和掌握使用信号量机制来是想进程之间的同步和互斥;3.学习使用创建文件对象,并利用文件映射对象来实现数据通信。二、实验内容?一个大小为 6 的缓冲区,初始为空,每个缓冲区能存放一个长度若为10个字符的字符串。?2 个生产者–随机等待一段时间,往缓冲区添加数据,–若缓冲区已满,等待消费者取走数据后再添加–重复 12 次?3 个消费者–随机等待一段时间,从缓冲区读取数据–若缓冲区为空,等待生产者添加数据后再读取–重复 8 次说明:?显示每次添加和读取数据的时间及缓冲区的状态?生产者和消费者用进程模拟,缓冲区用共享内存来实现三、 实验环境1. Windows 下:Windows8 ,Visual studio 2013 2. Linux 下:Linux Ubuntu 4,gcc 四、 程序设计与实现1.Windows 下:A. 主要函数说明:(1) PROCESS_INFORMATIONStartClone(intnCloneID) 功能:用来创建 5 个相同的进程, 前两个为生产者, 后三两个为消费者,赋予其不同的ID 值,返回进程的信息。(2) CreateSemaphore();功能:创建 3 个信号量: full ,empty,mutex。来互斥的访问缓冲区,实现通信。(3) CreateFileMapping()功能:在当前运行的进程中创建文件映射对象,来模拟共享缓冲区MapViewOfFile()功能:在此文件映射上创建视图映射到当前应用程序的地址空间B. 程序流程图开始实验代码如下:Windows :pp : 定义控制台应用程序的入口点。初始化 : 创建的子进程个数为0 nClone=0; 创建 3 个信号量:full ,empty,mutex 创建共享内存创建 5 个相同的子进程nClone++ nClone= 申请缓冲区P(empty) P(mutex) 把 产 品 放 入 缓 冲区:将 0 置为 1 释放缓冲区:V(mutex) V(full) 随机等待12 次 放完了申请缓冲区P(full) P(mutex) 从 缓 冲 区 取 产品:将 1 置为 0 释放缓冲区:V(mutex) V(empty) 随机等待12次 取完了等 待 子 进 程 执 行完毕结束每个子进程结束0

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

试验三:生产者与消费者

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群