- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2009年秋季学期 操作系统原理课程设计 题 目: 苹果-桔子问题的实现 专业班级: 计算机 (2)班 姓 名: 邢博文 学 号: 指导教师: 王旭阳 成 绩: _______________ 摘 要 2 正 文 3 1. 问题描述 3 2. 设计目的 4 3. 设计要求 5 4. 详细设计 6 5. 结果分析 12 设 计 总 结 13 参考文献 14 致 谢 15 附录:源程序代码 16 摘 要 本设计实际上是生产者-消费者问题的一种变形。这里,生产者(父亲和母亲)放入缓冲区(盘子)的产品有两类(苹果和桔子),消费者(女儿和儿子)也有两类,每类消费者只消费其中固定的一类产品。生产者和消费者共享缓冲区,缓冲区中有空时,生产者可放入产品(不许放重),否则等待。缓冲区中有产品时,消费者可取出产品(不许取重),否则等待。 关键词:进程同步,PV操作,互斥,信号量 正 文 1. 问题描述 桌上有一个空盘子,只允许放一个水果。爸爸专向盘中放苹果,妈妈专向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时,一次只能放一个水果。 学生通过该题目的设计过程,可以掌握生产者与消费者问题、软件开发方法并提高解决实际问题的能力。各进程在执行过程中为合作完成一个共同的任务,需要协调步伐,交换信息。 并发进程在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通消息,称为进程同步。 利用信号量和PV操作实现进程同步,PV操作是典型的同步机制之一。用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望的消息尚未产生;当信号量的值非0时,表示期望的消息已经存在。用PV操作实现进程同步时,调用P操作测试消息是否到达,调用V操作发送消息。 本题实际上是生产者-消费者问题的一种变形。这里,生产者放入缓冲区的产品有两类,消费者也有两类,每类消费者只消费其中固定的一类产品。生产者和消费者共享缓冲区,缓冲区中有空时,生产者可放入产品(不许放重),否则等待。缓冲区中有产品时,消费者可取出产品(不许取重),否则等待。 2. 设计目的 学生通过该题目的设计过程,掌握进程同步问题的原理、软件开发方法并提高解决实际问题的能力。 3. 设计要求 分析设计要求,给出解决方案(要说明设计实现所用的原理、采用的数据结构)。 设计合适的测试用例,对得到的运行结果要有分析。 设计中遇到的问题,设计的心得体会。 4、文档:课程设计打印文档每个学生一份,并装在统一的资料袋中,资料袋前面要贴有学校统一的资料袋封面。 5、光盘:每个学生文档和程序资料分别建在一个以自己学号和姓名命名的文件夹下,并要求每班负责人汇总每个学生的文件放在以班级姓名命名的文件夹下,刻录成5寸光盘,并复制四份(共五张内容相同的光盘),放在一个专门的资料袋中,不必再装软盘。 4. 详细设计 (1)算法设计 1.采用类C语言定义相关的数据类型 int plate=0; int apple=0; int orange=0; int m,n,i,N,p; 2.父亲进程模块 void father_put(){ if(plate==1){ printf(plate full,father wait...\n); } else{ apple=1; plate=1; printf(father put apple!!!\n); } } 3.母亲进程模块 void mother_put(){ if(plate==1){ printf(plate full,mother wait...\n); } else{ orange=1; plate=1; printf(mother put orange!!!\n); } } 4.儿子进程模块 void son_get(){ if(plate==0){ printf(plate empty,son wait...\n); } else if(orange==1){ orange=0; plate=0; printf(son get orange!!!\n); } else { printf(plate apple,son wait...\n); } } 5.女儿进程模块 void daughter_get(){ if(pla
您可能关注的文档
最近下载
- NB-T47008-2010承压设备用碳素钢和合金钢锻件.pdf VIP
- 关于XX学校基孔肯雅热防控工作方案(必威体育精装版版).pdf
- 风电光伏安装施工培训课件课件.pptx VIP
- 富士FFA电梯控制系统使用说明书NW3P电气原理图纸.pdf
- DB50T 867.6-2019 安全生产技术规范 第6部分:黑色金属冶炼企业 .pdf VIP
- 核心素养视域下高中思政课教学目标设计探析.pptx VIP
- 英语课件怎么做.pptx VIP
- 景区标识标牌标识标牌安装方案.docx
- 《钢结构通用规范+GB+55006-2021》详细解读.pdf
- 2024年度省安委会成员单位安全生产工作考核要点和评分标准(2).docx
有哪些信誉好的足球投注网站
文档评论(0)