- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
摘 要
本设计实际是生产者—消费者的变形,通过有界缓冲区把生产者和消费者联系起。假定生产者和消费者的优先级是相同的,只要缓冲区未满,生产者就可以往缓冲区内放入产品。苹果与橘子的问题是典型的进程同步问题。本问题利用C语言实现相应的P、V原语。主要过程可用生产消费者来模拟,这里,生产者(父亲和母亲)放入缓冲区(盘子)的产品有两类(苹果和桔子),消费者(女儿和儿子)也有两类,每类消费者只消费其中固定的一类产品。生产者和消费者共享缓冲区,缓冲区中有空时,生产者可放入产品(不许放重),待缓冲区中有产品时,消费者可取出产品(不许取重),否则等待。
关键字:进程同步;P、V操作;信号量
目 录
1.概述 1
1.1问题描述 1
1.2需求分析 1
1.3设计目的 1
1.4设计要求 2
2.概要设计 3
2.1数据结构 3
2.2模块声明 4
3.详细设计 6
3.1界面设计 6
3.2算法设计 6
3.3设计流程图 9
3.3.1爸爸放苹果进程操作流程图 9
3.3.2妈妈放桔子进程操作流程图 10
3.3.3儿子取桔子操作流程图 11
3.3.4女儿取苹果操作流程图 12
4.结果分析 13
5.设计总结 17
参考文献 18
致 谢 19
附录 20
1.概述
1.1问题描述
桌上有一个空盘子,只允许放一个水果。爸爸专向盘中放苹果,妈妈专向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时,一次只能放一个水果。 这个问题实际上是两个生产者和两个消费者被连接到仅能放一个产品的缓冲器上。生产者各自生产不同的产品,但就其本质而言,他们是同一类生产者。而消费者则各自去需要的产品消费,但消费的方式不同。解决此类问题利用记录型信号量机制和P、V操作来实现进程同步。进程同步是指一个进程的执行依赖于另一个进程的信号或消息,当一个进程没有得到来自与另一个进程的信号或消息时则等待,直到信号或消息到达才被唤醒。
1.2需求分析
本实验进行操作系统课设的主要任务是模拟生产者与消费者问题的一个衍生,即实现苹果--橘子问题。这个题目有两个生产者,分别生产橘子和苹果。有两个消费者,分别消费苹果和橘子。同时,因为两个生产者和两个消费者同时对一个缓冲区进行操作。所以应互斥的访问的缓冲区以保证程序的正确性。本次进程的目的就是加深个进程之间的正确有效的访问一个存储单元缓冲区,即同步和互斥。也要涉及到信号量在互斥访问中的使用,生产者和消费者问题的实现和流程问题。当计算机中两个或者多个进程在执行时需要使用公用缓冲区,并且对该缓冲区采取了互斥措施,这时如果并发执行这些进程的时候就会造成CPU时间的极大浪费,这是操作系统设计要求不允许的。而这种现象在操作系统和用户进程中大量存在。因此为了解决这一问题,提出了同步的概念,即把异部环境下的一组并发进程,因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。
1.3设计目的
该问题是典型的进程同步问题。某些进程为了完成同一任务分工合作,由于合作的每一个进程都是独立的不可预知的推进,这就需要相互合作的进程在某些合作点上协调各自的工作。当合作进程中的一个到达合作点后,在尚未得到其他合作进程发来的消息或信号前应阻塞自己,直到其合作进程发来协调信号或消息后才能被唤醒。这就是进程同步要解决的问题。
借助C语言实现进程同步经典问题—苹果-桔子问题,用高级语言编写和调试一个程序,以加深对的理解。通过用C语言模拟实现,加深理解有关机制的概念。1.4设计要求
这是进程同步与互斥问题的模拟,可以把向盘子放或取水果的每一个过程可以转为一个进程的操作,这些进程是互斥的,同时也存在一定的同步关系。通过编程实践时,实际是随机的调用一个进程的操作,而这些进程的操作相当于程序中的函数调用。而计算机在执行时每一个时刻只能执行一个操作,这就是互斥的表现。同步的模拟可以类似于函数调用时的前提关系即先决条件。这样进程同步模拟就完全可以通过函数的调用来实现。为下面吃水果的问题创建进程并实现进程之间的同步模型。能够处理以下的情形:2.1数据结构
在此次程序中一共涉及到线程、函数、互斥信号、信号量和常变量。在本程序中使用了Father、Mother、Son和Daughter等共4个线程。 Father、Mother线程的作用是模拟实现向盘子中放苹果或者橘子的操作,当主程序执行之后创建了Father或者Mother线程,则该线程会独自占用整个资源,并执行putapple或者putorange函数来实现操作,在执行Father或者Mother线程时,首先会将信号量empty减1,来说明盘子中已经放置了一个水果,之后将互斥信号mutex置0,来说明盘子已经被占用,其他进程无法占用。当实现了putapple
您可能关注的文档
- 煤矿机电管理规定详解解决方案.doc
- 机床电气控制学习任务CA6140型车床电气控制线路的安装与检修工作页解决方案.doc
- 照明灯智能遥控开关3品解决方案.doc
- 球类自学考试试题详解解决方案.doc
- 图书管理需求规格说明书解决方案.doc
- 照明灯智能遥控开关3解决方案.doc
- 药理学学习指导2解决方案.doc
- 上市公司并购设计中支付手段的选择解决方案.doc
- 无负压供水设备招标文件含评分表及技术参数(全新)解决方案.doc
- 电子物料选型与认证概述解决方案.doc
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
文档评论(0)