操作系统课程设计-进程同步模拟-水果问题.doc

操作系统课程设计-进程同步模拟-水果问题.doc

ID:61499601

大小:218.50 KB

页数:19页

时间:2021-02-07

操作系统课程设计-进程同步模拟-水果问题.doc_第1页
操作系统课程设计-进程同步模拟-水果问题.doc_第2页
操作系统课程设计-进程同步模拟-水果问题.doc_第3页
操作系统课程设计-进程同步模拟-水果问题.doc_第4页
操作系统课程设计-进程同步模拟-水果问题.doc_第5页
资源描述:

《操作系统课程设计-进程同步模拟-水果问题.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、长治学院课程设计报告课程名称:操作系统课程设计设计题目:进程同步模拟—吃水果问题系别:计算机系专业:计算机科学与技术组别:第八组学生姓名:韩伟伟学号:起止日期:2011年6月7日~2011年6月22日指导教师:王崇霞目录1需求分析31.1吃水果问题的描述31.2问题的转换32功能设计42.1数据结构42.2模块说明42.3操作的流程图53开发平台及源程序的主要部分63.1开发平台63.2源程序74测试用例,运行结果与运行情况分析164.1测试用例164.2运行结果165自我评价与总结17进程同步模拟设

2、计——吃水果问题1需求分析1.1吃水果问题的描述桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。1.2问题的转换这是进程同步问题的模拟,可以把向盘子放或取水果的每一个过程可以转为一个进程的操作,这些进程是互斥的,同时也存在一定的同步关系。通过编程实践时,实际是随机的调用人一个进程的操作,而这些进程的操作相当于程序中的函数调用。而计算机在执行时每一个时刻只能执行一个操作,这就

3、默认了互斥。同步的模拟可以类似于函数调用时的前提关系即先决条件。这样进程同步模拟就完全可以通过函数的调用来实现。具体的每一个操作的对应的函数的关系:爸爸向盘子中放一个苹果:Father()妈妈向盘子中放一个橘子:Mother()儿子1从盘子取一个橘子:Son1()儿子2从盘子取一个橘子:Son2()女儿1从盘子取一个橘子:Daugther1()儿子1从盘子取一个橘子:Daugther2()2功能设计2.1数据结构(1)用一个整型变量Plate_Size表示盘子,初始值为0,当放水果时Plate_Siz

4、e加1,取水果时Plate_Size减1。变量Plate_Size的最大值为2,当为2时表示盘子已经满,此时若进行放水果操作,放水果将处于等待状态;为0时表示盘子为空,此时若进行取水果操作,取水果操作将处于等待状态。(2)整型变量orange和apple分别表示盘子中的橘子和苹果数目,初始都为0,Plate_Size=apple+orange。(3)用6个bool型的变量Father_lag,Mother_lag,Son1_lag,Son2_lag,Daughter1_lag,Daughter2_la

5、g表示六个进程是否处于等待状态。处于等待时,变量值为true。(4)两个放水果进程进程同时处于等待状态时,若有取水果的操作将自动执行等待的放水果进程,执行按等待的先后顺序;两个取苹果或橘子进程同时候处于等待状态,若有放苹果或橘子的操作将自动执行等待的取进程,进行按等待的先后顺序。(5)用一个随机的函数产生0—5的6个整数,分别对应六个进程的调用。2.2模块说明2.2.1主函数用一个随机的函数产生0—5的6个整数,分别对应六个进程的调用,调用的次数可以自己输入,本程序共产生了10次随机的调用进程。2.2

6、.26个进程函数爸爸向盘子中放一个苹果操作:Father()妈妈向盘子中放一个橘子操作:Mother()儿子1从盘子取一个橘子操作:Son1()儿子2从盘子取一个橘子操作:Son2()女儿1从盘子取一个橘子操作:Daugther1()女儿2从盘子取一个橘子操作:Daugther2()2.2.3Print函数用于输出盘子中苹果和橘子的个数,水果总个数及有哪些进程处于等待状态。2.3操作的流程图2.3.1放水果操作爸爸放苹果进程的操作流程图:Father操作:Plate_Size=2否否Daugther1

7、或Daugher2处于等待状态是按等待先后顺序调用Daugther1或Daughter2操作是Father进程处于等待状态Father进程调用:orange+1Plate_Size+1,Print()函数调用返回2.3.2取水果操作儿子1取橘子的操作流程图:Son1操作:Plate_Size=2否否Daugther1或Daugher2处于等待状态是按等待先后顺序调用Daugther1或Daughter2操作是Father进程处于等待状态Father进程调用:orange+1Plate_Size+1,P

8、rint()函数调用返回3开发平台及源程序的主要部分3.1开发平台(1)使用系统:WindowsXP(2)使用语言:C++(3)开发工具:VisualC++6.03.2源程序3.2.1各进程调用的函数voidFather()//Father进程{apple++;}voidMother()//Mother进程{orange++;}voidSon1()//Son1进程{orange--;}voidSon2()//Son2进程{orange--;}voidDa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。