2022年操作系统课程设计进程同步模拟水果问题 .docx
《2022年操作系统课程设计进程同步模拟水果问题 .docx》由会员分享,可在线阅读,更多相关《2022年操作系统课程设计进程同步模拟水果问题 .docx(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选学习资料 - - - - - - - - - 长治学院课程设计报告课程名称: 操作系统课程设计设计题目 :进程同步模拟 吃水果问题系 别:运算机系专 业:运算机科学与技术组 别:第八组同学姓名 : 韩伟伟 学 号: 08407106 起止日期 :2022 年 6 月 7 日2022 年 6 月 22 日名师归纳总结 指导老师 :王崇霞第 1 页,共 20 页- - - - - - -精选学习资料 - - - - - - - - - 目录 1 需求分析 3 1.1 吃水果问题地描述 3 1.2 问题地转换 3 2 功能设计 4 2.1 数据结构 4 2.2 模块说明 4 2.3 操作地流程图
2、 5 3 开发平台及源程序地主要部分 6 3.1 开发平台 6 3.2 源程序 7 4 测试用例 , 运行结果与运行情形分析 16 4.1 测试用例 16 4.2 运行结果 16 名师归纳总结 5 自我评判与总结18 第 2 页,共 20 页- - - - - - -精选学习资料 - - - - - - - - - 进程同步模拟设计吃水果问题1 需求分析1.1 吃水果问题地描述桌子上有一只盘子 ,最多可容纳两个水果 ,每次只能放入或者取出一个水果 .爸爸特地向盘子中放苹果 ,妈妈特地向盘子中放橘子 ,两个儿子特地等待吃盘子中地橘子 ,两个女儿特地等吃盘子中地苹果 . 1.2 问题地转换这是进程
3、同步问题地模拟,可以把向盘子放或取水果地每一个过程可以转为一个进程地操作 ,这些进程是互斥地 ,同时也存在肯定地同步关系 .通过编程实践时 ,实际是随机地调用人一个进程地操作,而这些进程地操作相当于程序中地函数调用 .而运算机在执行时每一个时刻只能执行一个操作 ,这就默认了互斥 .同步地模拟可以类似于函数调用时地前提关系即先决条件 .这样进程同步模拟就完全可以通过函数地调用来实现 . 详细地每一个操作地对应地函数地关系:爸爸向盘子中放一个苹果:Father 妈妈向盘子中放一个橘子:Mother 儿子 1 从盘子取一个橘子: Son1 儿子 2 从盘子取一个橘子: Son2 女儿 1 从盘子取一
4、个橘子: Daugther1 儿子 1 从盘子取一个橘子: Daugther2 名师归纳总结 - - - - - - -第 3 页,共 20 页精选学习资料 - - - - - - - - - 2 功能设计2.1 数据结构1用一个整型变量Plate_Size表示盘子 ,初始值为 0,当放水果时 Plate_Size加1,取水果时 Plate_Size减 1.变量 Plate_Size地最大值为 2,当为 2 时表示盘子已经满 ,此时如进行放水果操作 ,放水果将处于等待状态;为 时如进行取水果操作 ,取水果操作将处于等待状态 . 0 时表示盘子为空 ,此2整型变量orange 和 apple 分
5、别表示盘子中地橘子和苹果数目,初始都为0,Plate_Size=apple+orange. 3用6个bool型地变量Father_lag,Mother_lag,Son1_lag,Son2_lag,Daughter1_lag,Daughter2_lag表示六个进程是否处于等待状态 .处于等待时 ,变量值为 true. 4两个放水果进程进程同时处于等待状态时,如有取水果地操作将自动执行等待地放水果进程 ,执行按等待地先后次序;两个取苹果或橘子进程同时候处 于等待状态 ,如有放苹果或橘子地操作将自动执行等待地取进程 ,进行按等待地 先后次序 . 5用一个随机地函数产生 2.2 模块说明2.2.1 主
6、函数05 地 6 个整数 ,分别对应六个进程地调用 . 用一个随机地函数产生 05 地 6 个整数 ,分别对应六个进程地调用 ,调用地次数可以自己输入 ,本程序共产生了 10 次随机地调用进程 . 2.2.2 6个进程函数名师归纳总结 爸爸向盘子中放一个苹果操作:Father 第 4 页,共 20 页妈妈向盘子中放一个橘子操作:Mother - - - - - - -精选学习资料 - - - - - - - - - 儿子 1 从盘子取一个橘子操作:Son1 儿子 2 从盘子取一个橘子操作:Son2 女儿 1 从盘子取一个橘子操作:Daugther1 女儿 2 从盘子取一个橘子操作:Daugth
7、er2 2.2.3Print 函数用于输出盘子中苹果和橘子地个数,水果总个数及有哪些进程处于等待状态. 2.3 操作地流程图231 放水果操作爸爸放苹果进程地操作流程图:Father操作:Plate_Size=2 是否 Father 进程处于等待状Father进程调用: orange+1 Plate_Size+1,Print函数调 用Daugther1 或 Daugher2 处 于等待状 态否是返回按等待先后次序调用Daugther1或 Daughter2操作名师归纳总结 - - - - - - -第 5 页,共 20 页精选学习资料 - - - - - - - - - 232 取水果操作儿子
8、 1取橘子地操作流程图:Son1操作:Plate_Size=2 是否 Father 进程处于等待状 态 Father进程调用: orange+1 Plate_Size+1,Print函数调 用Daugther1 或 Daugher2 处 于等待状 态否是返回按等待先后次序调用 Daugther1或 Daughter2操作3 开发平台及源程序地主要部分3.1 开发平台(1)使用系统: indows XP (2)使用语言: C+ (3)开发工具: Visual C+ 6.0 名师归纳总结 - - - - - - -第 6 页,共 20 页精选学习资料 - - - - - - - - - 3.2 源
9、程序3.2.1 各进程调用地函数void Father /Father进程 apple+; void Mother /Mother 进程 orange+;void Son1 /Son1进程 orange-; void Son2 /Son2进程 orange-; void Daughter1 /Daughter1进程 apple-; void Daughter2 /Daughter2进程 apple-; 3.2.2Print 函数(打印盘子剩余水果及各进程等待状态)void Print / 打印盘子剩余水果及各进程地等待状态地进程 cout现在盘子里有apple 个苹果 ,orange 个橘子
10、, 共有apple+orange个水果 .endl;ifFather_lag=true coutFather进程处于等待状态 ,;ifMother_lag=true coutMother 进程处于等待状态 ,;ifSon1_lag=true coutSon1进程处于等待状态 ,;ifSon2_lag=true 名师归纳总结 - - - - - - -第 7 页,共 20 页精选学习资料 - - - - - - - - - coutSon2进程处于等待状态 , ;ifDaughter1_lag=true coutDaughter1进程处于等待状态 ,;ifDaughter2_lag=true c
11、outDaughter2进程处于等待状态 ,;ifFather_lag=false&Mother_lag=false&Son1_lag=false&Son2_ lag=false&Daughter1_lag=false&Daughter2_lag=false.=true coutendl; 3.2.3 主函数int main int k;srandunsignedtimeNULL;/srand函数产生一个以当前时间开头地随机 种子fork=0;k10;k+ int i;cout第k+1 次操作 :endl;i=rand%6; /随进生成 1-5. Plate_Size=apple+orange
12、;switchi case 0: coutFather调用 .endl; ifPlate_Size=2 Father_lag=true;/Father等待 Print;ifMother_lag=false MonFa_c=1; else Father;Print;ifDaughter1_lag=true&Daughter2_lag=true ifDaughter_b=1 Daughter1_lag=false;/Daughter1等待取消名师归纳总结 - - - - - - -第 8 页,共 20 页精选学习资料 - - - - - - - - - cout处于等待地 Daughter1自动被
13、调用 endl;Daughter1; /处于等待地 Daughter1自动调用 Print;Daughter_b=2; else Daughter2_lag=false;/Daughter2等待取消 cout处于等待地 Daughter2自动被调用 endl;Daughter2; /处于等待地 Daughter2自动调用 Print;Daughter_b=1; else ifDaughter1_lag=true Daughter1_lag=false;/Daughter1等待取消 cout处于等待地 Daughter1自动被调用 endl;Daughter1; /处于等待地 Daughter1
14、自动调用 Print;Daughter_b=0; else ifDaughter2_lag=true Daughter2_lag=false;/Daughter2等待取消 cout处于等待地 Daughter1自动被调用 endl; Daughter2; /处于等待地 Daughter2自动调用 Daughter_b=0; break;case 1: coutMother 调用.endl;ifPlate_Size=2 Mother_lag=true; /等待 Print;ifFather_lag=false MonFa_c=2; else 名师归纳总结 - - - - - - -第 9 页,共
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统课程设计进程同步模拟水果问题 2022 操作系统 课程设计 进程 同步 模拟 水果 问题
限制150内