实习2 并发控制-多生产者消费者问题 操作系统高级 教学课件.ppt

实习2 并发控制-多生产者消费者问题 操作系统高级 教学课件.ppt

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

实习二:并发控制 1.多生产者P-消费者C问题 2.银行服务问题 生产者-消费者问题 题目说明(1) 实习要求 在Windows 环境下,编程实现多生产者P-消费者C问题。要求实现程序并构造一个输入文本,给出你的程序的运行输出 给出下面的输入文本得到的输出文本(测试文本格式介绍见下) 5 1 p 3 2 p 4 3 c 4 1 4 p 2 5 c 2.1 1 2 4 生产者-消费者问题 题目说明(2) 实现提示 对某一P有需求的全部C均访问过某缓冲区后、该P和其它的P才可以向这个缓冲区存放产品 参考《Windows内核实验教程》中读者-写者问题实例(P70) 相应的API函数参考《Windows内核实验》中的读者-写者问题和MSDN 生产者-消费者问题 题目说明(3) 测试文本格式 测试文件包括n+1行,第一行为缓冲区数目,以下每行为一个记录,记录的字段用空格分开。记录第一个字段是线程序号,第二字段标记为C或P,第三字段是表示生产/消费用时,对于C,之后的字段表示它使用那些生产者(以线程序号表示)的产品,P则只有三个字段 生产者-消费者问题 题目说明(4) 回答问题 1.缓冲区的大小对实验结果有何影响? 2.你设计了几个进(线)程来完成此问题?各个进(线)程都完成了什么工作?这些进(线)程之间有何种制约关系? 3.了解Win32 API中定义的IPC函数,说明比较说明涉及到的几种同步对象。你猜测哪一种操作速度比较快,证实你的想法,并给出一个合理的解释。 思考题 1.实现本实习互斥的过程中,哪个对象效率比较高?为什么? 2. 在该问题中存在哪些同步问题,哪些互斥问题? 3.如果缓冲区是无限大的,那么输入、输出进程读、写缓冲区需要什么条件? 4.若使用进程间通信方式实现该问题,具体需要怎么做? 5.线程在实现同步的时候,主要有那些同步对象,这些同步对象各有什么特点? 6.本实验出现的函数及其参数,名称与含义。 银行服务问题 题目说明(1) 实习要求 在Windows环境下,编程实现银行业务服务问题,用P、V操作实现柜台人员和顾客进程的程序 银行业务服务问题:银行有n个柜员负责为顾客服务,顾客进入银行先取一个号码,然后等着叫号;当某个柜员空闲下来,就叫下一个号 银行服务问题 题目说明(2) 实现提示 某个号码只能由一名顾客取得(互斥对象) 不能有多于一个的柜员叫同一个号(互斥对象) 顾客进门后,要通知柜员;有顾客的时候,柜员才叫号(同步对象) 无柜员空闲的时候,顾客需要等待;无顾客的时候,柜员需要等待 相应的API函数参考MSDN 银行服务问题 题目说明(3) 回答问题 1.柜员人数和顾客人数对结果分别有什么影响? 2.选择何种互斥方法实现本实习?原因为何? 3.解决本实习的问题需要设计几个进程,这些进程间有什么样的制约关系? 4.如果用事件来实现同步操作,应该怎么做? 思考题 1.在该问题中存在哪些同步问题,哪些互斥问题? 2.实现互斥的方法有哪些?各自有什么特点?效率如何? 3.何谓死锁,死锁产生的原因,预防或消除的方法。 4.何谓饥饿,请说出饥饿产生的原因,以及确保进程尽可能公平获得资源的方法 。 5.该问题同多生产者-消费者问题的主要区别,从并 发程度,题目内的制约关系等方面考虑,并指出解 决方法的不同。 6.本实验出现的函数及其参数,名称与含义。 API CreateMutex 说明:创建一个互斥对象 返回值:如执行成功,就返回互斥体对象的句柄;零则表示出错 参数 lpMutexAttributes :指向SECURITY_ATTRIBUTES 结构的指针,该结构决定子进程师父能继承返回句柄。若lpMutexAttributes为NULL,则该句柄不能被继承 bInitialOwner :若创建进程希望立即拥有该互斥对象,则设为TRUE ;否则设为FALSE lpName :互斥对象的名字 API(续) OpenMutex 说明:打开存在的已命名的互斥对象 返回值:若成功,则返回互斥对象的句柄;否则返回NULL 参数 dwDesiredAccess :指定对请求的互斥对象的访问方式。MUTEX_ALL_ACCESS表示可以对该互斥对象进行所有可能的访问标记 bInheritHandle:指明返回句柄是否可以继承 lpNam

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档