![操作系统课程设计进程同步模拟水果问题_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-5/30/3c7894fb-9dfb-42a6-adeb-c769aebcd06d/3c7894fb-9dfb-42a6-adeb-c769aebcd06d1.gif)
![操作系统课程设计进程同步模拟水果问题_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-5/30/3c7894fb-9dfb-42a6-adeb-c769aebcd06d/3c7894fb-9dfb-42a6-adeb-c769aebcd06d2.gif)
![操作系统课程设计进程同步模拟水果问题_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-5/30/3c7894fb-9dfb-42a6-adeb-c769aebcd06d/3c7894fb-9dfb-42a6-adeb-c769aebcd06d3.gif)
![操作系统课程设计进程同步模拟水果问题_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-5/30/3c7894fb-9dfb-42a6-adeb-c769aebcd06d/3c7894fb-9dfb-42a6-adeb-c769aebcd06d4.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、长治学院课程设计报告课程名称:操作系统课程设计设计题目 :进程同步模拟 吃水果问题系别:计算机系专业:计算机科学与技术组别:第八组学生姓名 :韩伟伟学号 : 08407106起止日期: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自我评价与总结 .172进程
2、同步模拟设计吃水果问题1 需求分析1.1 吃水果问题地描述桌子上有一只盘子 ,最多可容纳两个水果 ,每次只能放入或者取出一个水果.爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中地橘子 ,两个女儿专门等吃盘子中地苹果.1.2 问题地转换这是进程同步问题地模拟 ,可以把向盘子放或取水果地每一个过程可以转为一个进程地操作 ,这些进程是互斥地 ,同时也存在一定地同步关系 .通过编程实践时 ,实际是随机地调用人一个进程地操作 ,而这些进程地操作相当于程序中地函数调用 .而计算机在执行时每一个时刻只能执行一个操作,这就默认了互斥 .同步地模拟可以类似于函数调用时地前提关系即先决条
3、件 .这样进程同步模拟就完全可以通过函数地调用来实现 .具体地每一个操作地对应地函数地关系:爸爸向盘子中放一个苹果:Father()妈妈向盘子中放一个橘子:Mother()儿子 1 从盘子取一个橘子: Son1()儿子 2 从盘子取一个橘子: Son2()女儿 1 从盘子取一个橘子: Daugther1()儿子 1 从盘子取一个橘子: Daugther2()32 功能设计2.1数据结构(1)用一个整型变量Plate_Size表示盘子 ,初始值为 0,当放水果时 Plate_Size 加1,取水果时 Plate_Size减 1.变量 Plate_Size地最大值为 2,当为 2 时表示盘子已经满
4、,此时若进行放水果操作 ,放水果将处于等待状态;为 0 时表示盘子为空 ,此时若进行取水果操作 ,取水果操作将处于等待状态 .(2) 整型变量orange 和 apple 分别表示盘子中地橘子和苹果数目,初始都为0,Plate_Size=apple+orange.(3)用6个bool型地变量Father_lag,Mother_lag,Son1_lag,Son2_lag,Daughter1_lag,Daughter2_lag表示六个进程是否处于等待状态 .处于等待时 ,变量值为 true.(4)两个放水果进程进程同时处于等待状态时,若有取水果地操作将自动执行等待地放水果进程 ,执行按等待地先后顺
5、序; 两个取苹果或橘子进程同时候处于等待状态 ,若有放苹果或橘子地操作将自动执行等待地取进程,进行按等待地先后顺序 .(5)用一个随机地函数产生05 地 6 个整数 ,分别对应六个进程地调用.2.2 模块说明2.2.1 主函数用一个随机地函数产生 0 5 地 6 个整数 ,分别对应六个进程地调用 ,调用地次数可以自己输入 ,本程序共产生了 10 次随机地调用进程 .2.2.26 个进程函数爸爸向盘子中放一个苹果操作:Father()妈妈向盘子中放一个橘子操作:Mother()4儿子 1 从盘子取一个橘子操作:Son1()儿子 2 从盘子取一个橘子操作:Son2()女儿 1 从盘子取一个橘子操作
6、:Daugther1()女儿 2 从盘子取一个橘子操作:Daugther2()2.2.3Print 函数用于输出盘子中苹果和橘子地个数,水果总个数及有哪些进程处于等待状态.2.3操作地流程图231 放水果操作爸爸放苹果进程地操作流程图:Father 操作:Plate_Size=2否Father 进程调用: orange+1 Plate_Size+1,Print()函数调 用Daugther1或 Daugher2处于等待状态是按等待先后顺序调用 Daugther1 或 Daughter2 操作是Father 进程处于等待状否返回5232 取水果操作儿子 1 取橘子地操作流程图:Son1 操作:P
7、late_Size=2否Father 进程调用: orange+1 Plate_Size+1,Print()函数调 用Daugther1或 Daugher2处于等待状态是按等待先后顺序调用 Daugther1 或 Daughter2 操作是Father 进程处于等待状态否返回3 开发平台及源程序地主要部分3.1 开发平台(1)使用系统: indows XP( 2)使用语言: C+(3)开发工具: Visual C+ 6.063.2 源程序3.2.1 各进程调用地函数void Father()/Father 进程apple+;void Mother() /Mother 进程orange+;voi
8、d Son1()/Son1 进程orange-;void Son2()/Son2 进程orange-;void Daughter1()/Daughter1 进程apple-;void Daughter2()/Daughter2 进程apple-;3.2.2Print 函数(打印盘子剩余水果及各进程等待状态)void Print()/打印盘子剩余水果及各进程地等待状态地进程cout 现在盘子里有apple 个苹果 ,orange 个橘子 , 共有apple+orange个水果 .endl;if(Father_lag=true)coutFather 进程处于等待状态 ,;if(Mother_lag
9、=true)coutMother 进程处于等待状态 ,;if(Son1_lag=true)coutSon1 进程处于等待状态 ,;if(Son2_lag=true)7coutSon2 进程处于等待状态 , ;if(Daughter1_lag=true)coutDaughter1 进程处于等待状态 ,;if(Daughter2_lag=true)coutDaughter2 进程处于等待状态 ,;if(Father_lag=false)&(Mother_lag=false)&(Son1_lag=false)&(Son2_lag=false)&(Daughter1_lag=false)&(Daugh
10、ter2_lag=false)!=true)coutendl;3.2.3 主函数int main()int k;srand(unsigned)time(NULL);/srand()函数产生一个以当前时间开始地随机种子for(k=0;k10;k+)int i;cout第 k+1 次操作 :endl;i=rand()%6;/ 随进生成 1-5.Plate_Size=apple+orange;switch(i)case 0:coutFather 调用 .endl;if(Plate_Size=2)Father_lag=true;/Father()等待Print();if(Mother_lag=fals
11、e)MonFa_c=1;elseFather();Print();if(Daughter1_lag=true)&(Daughter2_lag=true)if(Daughter_b=1)Daughter1_lag=false;/Daughter1等待取消8cout处于等待地 Daughter1 自动被调用 endl; Daughter1(); /处于等待地 Daughter1自动调用Print();Daughter_b=2;elseDaughter2_lag=false;/Daughter2等待取消cout处于等待地 Daughter2自动被调用 endl; Daughter2(); /处于等待
12、地 Daughter2()自动调用 Print();Daughter_b=1;elseif(Daughter1_lag=true)Daughter1_lag=false;/Daughter1等待取消cout处于等待地 Daughter1 自动被调用 endl;Daughter1();/处于等待地 Daughter1()自动调用Print();Daughter_b=0;else if(Daughter2_lag=true)Daughter2_lag=false;/Daughter2等待取消cout处于等待地 Daughter1 自动被调用 endl; Daughter2(); /处于等待地 Da
13、ughter2()自动调用Daughter_b=0;break;case 1:coutMother 调用 .endl;if(Plate_Size=2)Mother_lag=true; /等待Print();if(Father_lag=false)MonFa_c=2;else9Mother();Print();if(Son1_lag=true)&(Son2_lag=true)if(Son_a=1)Son1_lag=false;/Son1等待取消cout处于等待地 Son1 自动被调用 endl;Son1();/ 处于等待地 Son1()自动调用Print();Son_a=2;elseSon2_l
14、ag=false;/Son2等待取消cout处于等待地 Son2 自动被调用 endl;Son2();/ 处于等待地 Son2()自动调用Print();Son_a=1;elseif(Son1_lag=true)Son1_lag=false; /Son1等待取消cout处于等待地 Son1 自动被调用 endl;Son1();/ 处于等待地 Son1()自动调用Print();Son_a=0;else if(Son2_lag=true)Son2_lag=false; /Son2等待取消cout处于等待地 Son2 自动被调用 endl;Son2();/ 处于等待地 Son2()自动调用Prin
15、t();Son_a=0;break;case 2:10coutSon1 调用 .endl;if(orange=0)Son1_lag=true;/Son1 处于等待Print();if(Son2_lag=false)Son_a=1;/用于判断 Son1 和 Son2 等待地先后性elseSon1();Print();if(Father_lag=true)&(Mother_lag=true)if(MonFa_c=1)/Father和 Mother 同时处于等待 ,但 Father 先等待,因此先调用Father_lag=false;cout处于等待地 Father 自动被调用 endl;Fathe
16、r();Print();MonFa_c=2;else /Father和 Mother 同时处于等待 ,但 Mother 先等待 ,因此先调用Mother_lag=false;cout处于等待地 Mother 自动被调用 endl;Mother();Print();MonFa_c=1;elseif(Father_lag=true)/只有 Father处于等待 ,调用Father_lag=false;cout处于等待地 Father自动被调用 endl;Father();Print();MonFa_c=0;else if(Mother_lag=true)/只有 Mother 处于等待 ,调用11M
17、other_lag=false;cout 处于等待地 Mother 自动被调用 endl;Mother();Print();MonFa_c=0;break;case 3:coutSon2 调用 .endl;if(orange=0)Son2_lag=true;/Son2 处于等待Print();if(Son1_lag=false)Son_a=2;elseSon2();Print();if(Father_lag=true)&(Mother_lag=true)if(MonFa_c=1)/Father 和 Mother 同时处于等待 ,但 Father先等待 , 因此先调用Father_lag=fal
18、se;cout处于等待地 Father自动被调用 endl;Father();Print();MonFa_c=2;else/Father和 Mother 同时处于等待 ,但 Mother 先等待 ,因此先调用Mother_lag=false;cout处于等待地 Mother 自动被调用 endl;Mother();Print();MonFa_c=1;else12if(Father_lag=true)/只有 Father 处于等待 ,调用Father_lag=false;cout处于等待地 Father 自动被调用 endl;Father();Print();MonFa_c=0;else if(
19、Mother_lag=true)/只有 Mother 处于等待 ,调用Mother_lag=false;cout处于等待地 Mother 自动被调用 endl;Mother();Print();MonFa_c=0;break;case 4:coutDaughter1 调用 .endl;if(apple=0)Daughter1_lag=true;/Daughter1 等待Print();if(Daughter2_lag=false)Daughter_b=1;elseDaughter1();Print();if(Father_lag=true)&(Mother_lag=true)if(MonFa_
20、c=1) /Father 和 Mother 同时处于等待 ,但 Father 先/等待 ,因此先调用Father_lag=false;cout 处于等待地 Father 自动被调用 endl;Father();Print();MonFa_c=2;else/Father 和 Mother 同时处于等待 ,但 Mother 先等待 ,因此13先调用Mother_lag=false;cout处于等待地 Mother 自动被调用 endl;Mother();Print();MonFa_c=1;elseif(Father_lag=true)/只有 Father处于等待 ,调用Father_lag=fal
21、se;cout处于等待地 Father 自动被调用 endl;Father();Print();MonFa_c=0;else if(Mother_lag=true)/只有 Mother 处于等待 ,调用Mother_lag=false;cout处于等待地 Mother 自动被调用 endl;Mother();Print();MonFa_c=0;break;case 5:coutDaughter2 调用 .endl;if(apple=0)Daughter2_lag=true; /Daughter2 等待Print();if(Daughter1_lag=false)Daughter_b=2;els
22、eDaughter2();Print();if(Father_lag=true)&(Mother_lag=true)14if(MonFa_c=1)/Father 和 Mother 同时处于等待 ,但Father 先等待 ,因此先调用Father_lag=false;cout 处于等待地 Father 自动被调用 endl;Father();Print();MonFa_c=2;else/Father 和 Mother 同时处于等待 ,但 Mother 先等待 ,因此先调用 Mother_lag=false;cout 处于等待地 Mother 自动被调用 endl;Mother();Print()
23、;MonFa_c=1;elseif(Father_lag=true)/只有 Father 处于等待 ,调用Father_lag=false;cout 处于等待地 Father 自动被调用 endl;Father();Print();MonFa_c=0;else if(Mother_lag=true)/只有 Mother 处于等待 ,调用Mother_lag=false;cout 处于等待地 Mother 自动被调用 endl;Mother();Print();MonFa_c=0;break;return 0;154 测试用例 , 运行结果与运行情况分析4.1 测试用例由于程序是模拟产生10 次随机地操作 ,执行相应地函数来模拟进程同步.可以将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度幼儿园儿童安全教育教材及课程开发协议
- 2025年度城市综合体物业管理服务合同协议范本
- 2025年产品质量保证协议文本
- 2025年仓储场地续租合同样本
- 2025年市场扩张战略策划咨询协议
- 市场调研与分析服务框架协议
- 2025年饮料酒项目规划申请报告模范
- 2025年中药材市场分析与采购服务合同
- 2025年涤纶短纤项目规划申请报告模范
- 2025年鼻毛修剪器项目规划申请报告模稿
- 初中信息技术课堂中的项目式学习实践研究结题报告
- 《工业废水臭氧催化氧化深度处理技术规程》(T-SDEPI 030-2022)
- 2024安全事故案例
- 生日快乐祝福含生日歌相册课件模板
- 2024-2025学年人教版数学六年级上册 期末综合卷(含答案)
- 天津市部分区2023-2024学年高二上学期期末考试 物理 含解析
- 2024年考研管理类综合能力(199)真题及解析完整版
- 2024年潍坊护理职业学院单招职业适应性测试题库附答案
- 《钳工基本知识》课件
- 第八期:风电典型事故案例剖析(二)
- 水文与水资源勘测基础知识单选题100道及答案解析
评论
0/150
提交评论