- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
长治学院
课程设计报告
课程名称:操作系统课程设计
设计题目: 进程同步模拟一一吃水果问题
系 别: 计算机系
专 业:计算机科学与技术
组 别: 第8组
学生姓名: ### 学号:123456123
起止日期:2011年6月28日~ 2011年7月3日
指导教师: ¥¥¥
目录
TOC \o 1-5 \h \z \o Current Document 第一章 具体设计任务和开发环境 3
\o Current Document 任务称述 3
\o Current Document 1.2开发环境 3
\o Current Document 第二章 基本思路及所涉及的相关理论 3
\o Current Document 2.1吃水果问题的转换 3
\o Current Document 2.2数据结构 4
\o Current Document 2.2.1吃水果问题的数据结构 .4
\o Current Document 第三章方案设计 4
\o Current Document 3.1主函数 4
\o Current Document 6个进程函数 4
\o Current Document Print 函数 5
\o Current Document 3.4取水果操作 5
\o Current Document 第四章 具体配置及实现步骤; 6
\o Current Document 4.1儿子取水果实现 6
\o Current Document 4.2运行结果 11
\o Current Document 5.1过程中出现的问题及相应解决办法 13
\o Current Document 第六章个人体会及建议 13
\o Current Document 6.1个人体会 .13
\o Current Document 6.1建议 14
参考文献 14
第一章 具体设计任务和开发环境
1.1任务称述
桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。 爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子 中的橘子,两个女儿专门等吃盘子中的苹果。
1.2开发环境
使用系统:Windows XP
使用语言:C++
开发工具:Visual C++ 6.0
第二章基本思路及所涉及的相关理论
2.1吃水果问题的转换
进程的操作,这些进程是互斥的,同时也存在一定的同步关系。通过编程实 践时,实际是随机的调用人一个进程的操作,而这些进程的操作相当于程序中的 函数调用。而计算机在执行时每一个时刻只能执行一个操作,这就默认了互斥。 同步的模拟可以类似于函数调用时的前提关系即先决条件。这样进程同步模拟就 完全可以通过函数的调用来实现。
具体的每一个操作的对应的函数的关系:
爸爸向盘子中放一个苹果:Father()
妈妈向盘子中放一个橘子:Mother()
儿子1从盘子取一个橘子:Son1()
儿子2从盘子取一个橘子:Son2()
女儿1从盘子取一个苹果:Daugther1()
儿子1从盘子取一个苹果:Daugther2()
2.2数据结构
2.2. 1吃水果问题的数据结构
用一个整型变量Plate_Size表示盘子,初始值为0,当放水果时Plate_Size 加1,取水果时Plate_Size减1。变量Plate_Size的最大值为2,当为2时 表示盘子已经满,此时若进行放水果操作,放水果将处于等待状态;为0时 表示盘子为空,此时若进行取水果操作,取水果操作将处于等待状态。
整型变量orange和apple分别表示盘子中的橘子和苹果数目,初始都为0, Plate_Size=apple+orange。
用 6 个 bool 型的变量 Father_lag,Mother_lag,Son1_lag,Son2_lag, Daughter1_lag,Daughter2_lag表示六个进程是否处于等待状态。处于等待 时,变量值为true。
两个放水果进程进程同时处于等待状态时,若有取水果的操作将自动执行等 待的放水果进程,执行按等待的先后顺序;两个取苹果或橘子进程同时候处 于等待状态,若有放苹果或橘子的操作将自动执行等待的取进程,进行按等 待的先后顺序。
用一个随机的函数产生0—5的6个整数,分别对应六个进程的调用。
第三章方案设计
3.1主函数
用一个随机的函数产生0—5的6个整数,分别对应六个进程的调用,调用的 次数可以自己输入,本程序共产生了 10次随机的调用进程。
3.2 6个进程函数
爸爸向盘子中放一个苹果操作:Father()
妈妈向盘子中放一个橘子操作:Mother()
儿子1从盘子取一个橘子操作:Son1()
儿子2从
文档评论(0)