没有合适的资源?快使用搜索试试~ 我知道了~
操作系统课程设计-进程同步模拟(吃水果问题)
3星 · 超过75%的资源 需积分: 19 59 下载量 158 浏览量
2011-06-30
10:55:30
上传
评论 3
收藏 161KB DOC 举报
温馨提示
试读
25页
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.模拟吃水果的同步模型:桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。
资源推荐
资源详情
资源评论
武汉理工大学《操作系统》课程设计说明书
题 目: 进程同步模拟设计——吃水果问题
初始条件:
1.预备内容:阅读操作系统的进程管理章节内容,对进程的同步和互斥,以及
信号量机制度有深入的理解。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写
等具体要求)
1.模拟吃水果的同步模型:桌子上有一只盘子,最多可容纳两个水果,每次只
能放入或者取出一个水果。爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,
两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。
2.设计报告内容应说明:
⑴ 需求分析;
⑵ 功能设计(数据结构及模块说明);
⑶ 开发平台及源程序的主要部分;
⑷ 测试用例,运行结果与运行情况分析;
⑸ 自我评价与总结:
i)你认为你完成的设计哪些地方做得比较好或比较出色;
ii)什么地方做得不太好,以后如何改正;
iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);
iv)完成本题是否有其他方法(如果有,简要说明该方法);
v)对实验题的评价和改进意见,请你推荐设计题目。
时间安排:
设计安排一周:周 1、周 2:完成程序分析及设计。
周 2、周 3:完成程序调试及测试。
周 4、周 5:验收、撰写课程设计报告。
(注意事项:严禁抄袭,一旦发现,一律按 0 分记)
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
进程同步模拟设计
——吃水果问题
1
武汉理工大学《操作系统》课程设计说明书
1 需求分析
1.1 吃水果问题的描述
桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个
水果。爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门
等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。
1.2 问题的转换
这是进程同步问题的模拟,可以把向盘子放或取水果的每一个过程可以转为
一个进程的操作,这些进程是互斥的,同时也存在一定的同步关系。通过编
程实践时,实际是随机的调用人一个进程的操作,而这些进程的操作相当于
程序中的函数调用。而计算机在执行时每一个时刻只能执行一个操作,这就
默认了互斥。同步的模拟可以类似于函数调用时的前提关系即先决条件。这
样进程同步模拟就完全可以通过函数的调用来实现。
具体的每一个操作的对应的函数的关系:
爸爸向盘子中放一个苹果:Father()
妈妈向盘子中放一个橘子:Mother()
儿子 1 从盘子取一个橘子:Son1()
儿子 2 从盘子取一个橘子:Son2()
女儿 1 从盘子取一个橘子:Daugther1()
儿子 1 从盘子取一个橘子:Daugther2()
2 功能设计
2.1 数据结构
(1)用一个整型变量 Plate_Size 表示盘子,初始值为 0,当放水果时 Plate_Size
加 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_lag
表示六个进程是否处于等待状态。处于等待时,变量值为 true。
(4)两个放水果进程进程同时处于等待状态时,若有取水果的操作将自动执
行等待的放水果进程,执行按等待的先后顺序;两个取苹果或橘子进程同时候
处于等待状态,若有放苹果或橘子的操作将自动执行等待的取进程,进行按等
待的先后顺序。
(5)用一个随机的函数产生 0—5 的 6 个整数,分别对应六个进程的调用。
2
武汉理工大学《操作系统》课程设计说明书
2.2 模块说明
2.1.1 主函数
用一个随机的函数产生 0—5 的 6 个整数,分别对应六个进程的调用,调用的
次数可以自己输入,本程序共产生了 10 次随机的调用进程。
2.1.2 6 个进程函数
爸爸向盘子中放一个苹果操作:Father()
妈妈向盘子中放一个橘子操作:Mother()
儿子 1 从盘子取一个橘子操作:Son1()
儿子 2 从盘子取一个橘子操作:Son2()
女儿 1 从盘子取一个橘子操作:Daugther1()
女儿 2 从盘子取一个橘子操作:Daugther2()
2.1.3 Print 函数
用于输出盘子中苹果和橘子的个数,水果总个数及有哪些进程处于等待状
态。
2.3 操作的流程图
2.3.1 放水果操作
爸爸放苹果进程的操作流程图:
3
武汉理工大学《操作系统》课程设计说明书
2.3.2 取水果操作
儿子 1 取橘子的操作流程图
4
Father 操作:
Plate_Size=
2
否
否
Daugther1 或 Daugher2 处
于等待状态
是
按等待先后顺序调用
Daugther1 或 Daughter2 操作
是
Father 进程处 于等待 状
态
Father 进程调用: orange+1
Plate_Size+1,Print() 函 数 调
用
返回
武汉理工大学《操作系统》课程设计说明书
3 开发平台及源程序的主要部分
3.1 开发平台
(1)使用系统:W indows XP
(2)使用语言:C++
(3)开发工具:Visual C++ 6.0
3.2 源程序
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <cmath>
5
Son1 操作:
Plate_Size=
2
否
否
Daugther1 或 Daugher2 处
于等待状态
是
按等待先后顺序调用
Daugther1 或 Daughter2 操作
是
Father 进程处 于等待 状
态
Father 进程调用: orange+1
Plate_Size+1,Print() 函 数 调
用
返回
剩余24页未读,继续阅读
资源评论
- xkh3581417212013-03-302点说明:1、这是windows环境下的,提醒各位。2、这个没用系统的信号量函数,居然是自己定义的bool型实现的。。。好吧。。。
- 冰淇淋真的很好吃2024-01-01这个并非真正的信号量控制,连线程都没有定义,信号量之间的抢占更是靠全局变量来实现。所以实验方式取巧了
cenjiayi521
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功