武汉理工大学 进程同步模拟设计-——吃水果问题

合集下载

吃水果问题

吃水果问题

实习一进程同步
一、实习内容
模拟进程同步。

二、实习目的
本实习要求学生理解进程同步的概念和进程同步技术——信号量机制。

三、实习题目
编写一个程序,模拟“吃水果问题”。

问题描述:桌上有一个盘子,每次只能放一个水果,爸爸专向盘中放苹果,妈妈专向盘中放橘子,儿子专等吃盘里的橘子,女儿专等吃盘里的苹果。

只要盘子空,爸爸妈妈可向盘中放水果,仅当盘中有自己需要的水果时,儿子或女儿可从中取出,请用信号量及PV操作模拟四人的同步关系。

提示:
(1)信号量和P、V(semwait&semsignal)操作原语自己定义,在保证该对原语原有意义的基础上,也可添加新内容(模拟的需要,结合提示(5)思考);
(2)4人分别是4个进程,每个进程的程序可由一个函数模拟;
其中,
进程名——作为进程的标识,自己定义。

状态——有两种状态,“就绪”和“阻塞”,初始状态都为“就绪”,用“R”表示。

当一个进程阻塞后,它的状态为“阻塞”,用“B”表示。

(3)当前执行哪个进程可由随机函数决定,若该进程当前是阻塞的,则打印“该进程阻塞”提示;否则,执行该进程程序;
(4)取、放水果的操作可用打印语句的方式替代;
(5)当一个阻塞态进程被唤醒成为就绪态,然后,再次被选中执行时,应从P原语的下一个语句开始执行。

这该怎么控制?想办法解决(结合提示(1)思考)。

注意:
信号量的设置和初值;
程序应有提示,界面友好!
用循环队列存阻塞队列和就绪队列。

操作系统课程设计吃水果问题完整

操作系统课程设计吃水果问题完整
目录
1
1.1
进程同步模拟设计:吃水果问题
1.2
桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。
1.3
将问题转换为信号量上的资源分配类型问题:
这是进程同步问题的模拟,可以把向盘子放或取水果的每一个过程可以转为一个进程的操作,这些进程是互斥的,同时也存在一定的同步关系。通过编程实践时,实际是随机的调用人一个进程的操作,而这些进程的操作相当于程序中的函数调用。而计算机在执行时每一个时刻只能执行一个操作,这就默认了互斥。同步的模拟可以类似于函数调用时的前提关系即先决条件。这样进程同步模拟就完全可以通过函数的调用来实现。
int MonFa_c;//用于爸爸妈妈等待次序的区别
int Son_a;//用于两个儿子等待次序的区别
int daughter_b;//用于两个女儿等待次序的区别
int k;//产生进程调用的数量
srand((unsigned)time(NULL));//srand()函数产生一个以当前时间开始的随机种子
Son2(); //处于等待的Son2()自动调用
Son_a=1;
}
}
else
{
if(Son1_lag==true)
{
Son1_lag=false; //Son1等待取消
cout<<"处于等待的Son1自动被调用"<<endl;
Son1(); //处于等待的Son源自()自动调用Son_a=0;
}
else if(Son2_lag==true)
{
orange--;

进程同步模拟设计--吃水果问题

进程同步模拟设计--吃水果问题

附件1:学号:012课程设计题目进程同步模拟设计--吃水果问题学院计算机科学与技术学院专业计算机科学与技术专业班级计算机姓名指导教师2011 年01 月19 日课程设计任务书学生:专业班级:指导教师:作单位:计算机科学与技术学院题目: 进程同步模拟设计——吃水果问题初始条件:1.预备容:阅读操作系统的进程管理章节容,对进程的同步和互斥,以及信号量机制度有深入的理解。

2.实践准备:掌握一种计算机高级语言的使用。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.模拟吃水果的同步模型:桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。

爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。

2.设计报告容应说明:⑴需求分析;⑵功能设计(数据结构及模块说明);⑶开发平台及源程序的主要部分;⑷测试用例,运行结果与运行情况分析;⑸自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他方法(如果有,简要说明该方法);v)对实验题的评价和改进意见,请你推荐设计题目。

时间安排:设计安排一周:周1、周2:完成程序分析及设计。

周2、周3:完成程序调试及测试。

周4、周5:验收、撰写课程设计报告。

(注意事项:严禁抄袭,一旦发现,一律按0分记)指导教师签名:年月日系主任(或责任教师)签名:年月日进程同步模拟设计——吃水果问题1需求分析1.1吃水果问题的描述桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。

爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。

1.2问题的转换这是进程同步问题的模拟,可以把向盘子放或取水果的每一个过程可以转为一个进程的操作,这些进程是互斥的,同时也存在一定的同步关系。

进程同步模型系统的设计—吃水果

进程同步模型系统的设计—吃水果

课程设计课程设计任务书学生: Miss屠专业班级: 08计科指导教师:王海英工作单位:计算机科学与技术学院题目: 进程同步模型系统的设计——吃水果问题初始条件:1.预备容:阅读操作系统的进程管理章节容,对进程的同步和互斥,以及信号量机制度有深入的理解。

2.实践准备:掌握一种计算机高级语言的使用。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.为下面吃水果的问题创建进程并利用通信API实现进程之间的同步模型。

能够处理以下的情形:桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。

爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。

2.设计报告容应说明:⑴课程设计目的与功能;⑵需求分析,数据结构或模块说明(功能与框图);⑶源程序的主要部分;⑷运行结果与运行情况分析;⑸自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他的其他方法(如果有,简要说明该方法);时间安排:设计安排一周:周1、周2:完成程序分析及设计。

周2、周3:完成程序调试及测试。

周4、周5:撰写课程设计报告。

指导教师签名:年月日系主任(或责任教师)签名:年月日进程同步模型系统的设计——吃水果问题1、课程设计目的与功能1.1、目的为下面吃水果的问题创建进程并利用通信API实现进程之间的同步模型。

能够处理以下的情形:桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。

爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。

1.2、实现的功能本程序共创建了4个在windows系统环境下实现的线程,即Fahter、Mother、Son和Daughter等4个线程,以及putapple、putorange、getapple和getorange 等4个函数,其中4个线程是用于实现爸爸、妈妈、儿子和女儿分别放水果和取水果的线程操作的,并分别调用这4个函数,来实现真正的操作。

技工院--苹果-桔子问题的实现

技工院--苹果-桔子问题的实现

《操作系统》课程设计任务书题目:苹果-桔子问题的实现学生姓名:班级:物联网工程1班学号:指导教师:张清/贾娟娟一、设计目的学生通过该题目的设计过程,掌握进程同步问题的原理、软件开发方法并提高解决实际问题的能力。

二、设计内容1、了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。

2、编写程序实现苹果-桔子问题。

桌上有一个空盘子,只允许放一个水果。

爸爸专向盘中放苹果,妈妈专向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。

规定当盘空时,一次只能放一个水果。

三、设计要求及工作量1、分析设计要求,给出解决方案(要说明设计实现所用的原理、采用的数据结构)。

2、设计合适的测试用例,对得到的运行结果要有分析。

3、设计中遇到的问题,设计的心得体会。

4、文档:课程设计打印文档每个学生一份,并装在统一的资料袋中。

5、光盘:每个学生的文档和程序资料建在一个以自己学号和姓名命名的文件夹下,刻录一张光盘,装入资料袋中。

四、要提交的成果1. 设计说明书一份,内容包括:1) 中文摘要100字;关键词3-5个;2) 设计思想;3)各模块的伪码算法;4)函数的调用关系图;5)测试结果;6)源程序(带注释);7)设计总结;8) 参考文献、致谢等。

2. 刻制光盘一张。

五、设计进度计划及时间安排六、主要参考资料1.汤子瀛,哲凤屏.《计算机操作系统》.西安电子科技大学学出版社.2.王清,李光明.《计算机操作系统》.冶金工业出版社.3.孙钟秀等. 操作系统教程. 高等教育出版社4.曾明. Linux操作系统应用教程. 陕西科学技术出版社.5. 张丽芬,刘利雄.《操作系统实验教程》. 清华大学出版社.6. 孟静,操作系统教程--原理和实例分析. 高等教育出版社7. 周长林,计算机操作系统教程. 高等教育出版社8. 张尧学,计算机操作系统教程,清华大学出版社9.任满杰,操作系统原理实用教程,电子工业出版社10.张坤.操作系统实验教程,清华大学出版社目录1.绪论 (1)1.1设计任务 (1)1.2设计思想 (1)1.3基础知识 (1)2.各模块伪码算法 (3)2.1父亲进程模块 (3)2.2母亲进程模块 (5)2.3儿子进程模块 (7)2.4女儿进程模块 (9)2.5Print函数 (11)3. 函数调用关系图 (14)3.1函数调用图........................................ 错误!未定义书签。

进程同步模拟设计--吃水果问题

进程同步模拟设计--吃水果问题

附件1:学号:012课程设计题目进程同步模拟设计--吃水果问题学院计算机科学与技术学院专业计算机科学与技术专业班级计算机姓名指导教师2011 年01 月19 日课程设计任务书学生:专业班级:指导教师:作单位:计算机科学与技术学院题目: 进程同步模拟设计——吃水果问题初始条件:1.预备容:阅读操作系统的进程管理章节容,对进程的同步和互斥,以及信号量机制度有深入的理解。

2.实践准备:掌握一种计算机高级语言的使用。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.模拟吃水果的同步模型:桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。

爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。

2.设计报告容应说明:⑴需求分析;⑵功能设计(数据结构及模块说明);⑶开发平台及源程序的主要部分;⑷测试用例,运行结果与运行情况分析;⑸自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他方法(如果有,简要说明该方法);v)对实验题的评价和改进意见,请你推荐设计题目。

时间安排:设计安排一周:周1、周2:完成程序分析及设计。

周2、周3:完成程序调试及测试。

周4、周5:验收、撰写课程设计报告。

(注意事项:严禁抄袭,一旦发现,一律按0分记)指导教师签名:年月日系主任(或责任教师)签名:年月日进程同步模拟设计——吃水果问题1需求分析1.1吃水果问题的描述桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。

爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。

1.2问题的转换这是进程同步问题的模拟,可以把向盘子放或取水果的每一个过程可以转为一个进程的操作,这些进程是互斥的,同时也存在一定的同步关系。

《我和水果交朋友》综合实践教学设计

《我和水果交朋友》综合实践教学设计

《我和水果交朋友》综合实践教学设计《我和水果交伴侣》综合实践教学设计一、课标相关要求:《语文课程标准》指出:综合实践活动课程是一门综合性课程,注意培育同学自主性、合作性学习过程。

它具有开放性、自主性、实践性、探究性的特点。

综合实践活动是基于同学的直接阅历,亲密联系同学自身生活和社会生活,强调获得亲自参预的主动体验,强调学会共享与合作,强调提高同学的发觉问题和解决问题的力量,强调学科学问与相关学问的综合运用。

二、教材分析:(一)教学内容分析:综合实践活动《我与水果交伴侣》一课,我引导同学从自身生活和社会生活中发觉问题,开展多样化的实践学习,在活动中我注意同学学问和技能的综合运用。

以讨论性学习为主导学习方式,以同学的直接阅历或体验为基础而开发和实施的。

本次综合实践活动是在老师的指导下,同学自主进行的综合性学习活动,是基于同学的日常生活阅历,亲密联系同学自身生活和社会实际,体现同学对水果学问的综合应用。

本次实践活动分三个阶段进行,旨在让同学联系已有的学问和生活阅历,仔细观看搜集,通过亲身体验学习,激发同学学习的兴趣,寓学问、技能于兴趣之中,鼓舞同学会动手、会创新、会团结协作。

(二)教学目标:1.通过调查、查阅书籍、上网、询问、亲身动手实践活动,培育同学猎取信息的力量。

2.通过削、切、挖等方法制作共性水果拼盘实践活动,培育同学的动手创新力量。

3.同学在小组合作过程中学会交往、学会合作,体验探究学习、合作学习和创作学习的活动乐趣。

4.通过观赏、展评和相互沟通让同学感悟果蔬拼盘的内涵文化,陶怡情操,丰富想象力。

5.激发同学乐于探究创新的欲望,鼓舞同学亲近自然,喜爱大自然。

(三)教学重点难点:1.通过削、切、挖等方法制作共性水果拼盘实践活动,培育同学的动手创新力量。

2.通过观赏、展评和相互沟通让同学感悟果蔬拼盘的内涵文化,陶怡情操,丰富想象力。

3.激发同学乐于探究创新的欲望,鼓舞同学亲近自然,喜爱大自然。

(四)教材课型、课时成果展现评价课,一课时。

进程同步模拟吃水果,操作系统课程设计

进程同步模拟吃水果,操作系统课程设计

总成绩
教研室审核意见:
年月
权重 0.1 0.4 0.2 0.3

成绩
教研室主任签字:
教学院(系)审一章需求分析................................................................................................................................1 1.1 问题概述.............................................................................................................................1
1.4 运行环境.............................................................................................................................1 第二章概要设计................................................................................................................................2
某某大学
课程设计报告
课程名称: 操作系统课程设计
设计题目: 系 别: 专 业: 组 别: 学生姓名: 起止日期: 指导教师:
进程同步模拟吃水果问题 计算机系 计算机科学与技术
学 号:
指导教师评语:
指导教师签名:


成 1、设计过程中出勤、学习态度等方面

操作系统课程设计报告—多进程同步橘子苹果问题

操作系统课程设计报告—多进程同步橘子苹果问题

操作系统课程设计报告院(系):计算机工程学院专业:计算机科学与技术专业学生姓名:__班级:__学号:题目:用多进程同步方法演示“桔子-苹果”问题____起迄日期:_2012.07.02_--2012.07.13_____设计地点:现代教育中心指导教师:熊晓芸2011—2012年度第 2 学期完成日期: 2012 年 7 月 13 日一、课程设计目的本次实验进行操作系统课程设计的主要任务是模拟生产者和消费者的一个衍生,即实现“橘子-苹果问题”。

这个问题中有两个生产者,分别生产苹果核橘子,有两个消费者,分别消费橘子和苹果。

同时,因为两个生产者和两个消费者对同一个缓冲区进行操作,所以应互斥的访问缓冲区以保证程序的正确性。

本次实验的目的就是加深各个进程正确有效的对资源的访问,即同步和互斥。

同时掌握信号量在互斥访问中的使用。

掌握生产者和消费者问题的流程和实现方法。

同时提高编程的能力、对问题的解决能力及查阅文档的能力。

二、课程设计内容与要求1、通过研究Linux的进程同步机制和信号量,实现特殊的生产者与消费者问题的并发控制。

2、说明:有两类生产者,一类负责生产桔子,一类负责生产苹果;有两类消费者,一类负责消费桔子,一类负责消费苹果;他们共享一个有20个存储单元的有界缓冲区,每个存储单元只能放入一种产品(桔子/苹果)。

3、设计要求:1)二类生产者与二类消费者数目均为20,即20个生产者负责生产桔子,20个生产者负责生产苹果;20个消费者负责消费桔子,20个消费者负责消费苹果2)二类生产者的生产速度与二类消费者的消费速度均可独立在程序界面调节,在运行中,该值调整后立即生效3)多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码,同时需要考虑算法的效率性4)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前生产者与消费者的指针位置,以及生产者和消费者线程标识符5)采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓冲区的状态三、系统分析与设计1、系统分析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。

操作系统第2章2

操作系统第2章2

16
writerj(void)(j=1,2,…,m) vord writerj(void)(j=1,2, ,m) { while(true){ p (wmutex); 文件; 写文件; v(wmutex); v(wmutex);} } Coend
17
其他经典同步问题
司机—售票员问题
设公共汽车上,司机和售票员的活动分别是: 司机: 售票员: 启动车辆 上下乘客 正常行车 关车门 到站停车 售票 开车门 上下乘客 在汽车不断到站,停车,行驶过程中,这两个 活动的同步关系。 解答
struct semaphore r15
cobegin readeri(void)(i=1,2,…k) void readeri(void)(i=1,2, k) { while(true){ p(rmutex); p(rmutex); if( if( readcount= =0 ) then p(wmutex); readcount:=readcount+1; v(rmutex); 读文件; 读文件; … p(rmutex); p(rmutex); readcount:=readcountreadcount:=readcount-1; If( readcount= =0) then v(wmutex); v(rmutex); } }
生产者 消费者 生产者 消费者 系统中使用资源的进程——消费者 系统中释放资源同类资源的进程——生产者
4
Dijkstra把同步问题抽象成一种生产者和消 Dijkstra把同步问题抽象成一种生产者和消 费者关系, 费者关系,计算机系统中的许多问题都可以被归 结为生产者和消费者关系。我们可以通过具有n 结为生产者和消费者关系。我们可以通过具有n 个缓冲区的缓冲池把生产者和消费者联系起来

《常吃的蔬菜和水果》作业设计方案-2023-2024学年科学人教版2001

《常吃的蔬菜和水果》作业设计方案-2023-2024学年科学人教版2001

《常吃的蔬菜和水果》作业设计方案第一课时一、设计背景:蔬菜和水果是我们日常饮食中不可或缺的一部分,它们含有丰富的营养物质,对保持健康具有重要作用。

然而,很多学生在日常生活中更倾向于食用快餐和零食,而对蔬菜和水果的摄入量常常不足。

因此,通过开展“常吃的蔬菜和水果”主题的作业设计,旨在引导学生养成良好的饮食习惯,增强他们对蔬菜和水果的认识和了解。

二、设计目的:1. 帮助学生认识各种蔬菜和水果的营养成分及其功效;2. 引导学生了解不同蔬菜和水果的种植方法和采摘季节;3. 培养学生对蔬菜和水果的兴趣,增加其摄入量,提高身体健康水平。

三、设计内容:1. 调查蔬菜和水果的种类及其特点:学生可以通过在超市、农贸市场或者网上的方式,了解各类蔬菜和水果的名称、外形、颜色、口感等特点,并记录下来;2. 制作蔬菜和水果拼盘:学生选择自己喜欢的蔬菜和水果,用心制作美观的拼盘,并分享制作过程和心得;3. 制定蔬菜和水果食谱:学生结合自己的口味和营养需求,制定一周的蔬菜和水果食谱,并分享给同学们;4. 种植蔬菜和水果:学生选择自己喜欢的蔬菜和水果,可以在家里的花园或者阳台种植,培养责任感和耐心;5. 体验采摘乐趣:学生可以参加当地的采摘活动,亲自体验采摘的乐趣,了解蔬菜和水果的生长环境和过程。

四、设计步骤:第一步:介绍“常吃的蔬菜和水果”的重要性和意义,引导学生关注自身饮食习惯;第二步:学生通过实地调研或网络搜索,了解各种蔬菜和水果的信息,汇总成报告或海报形式;第三步:学生按照设计要求,进行蔬菜和水果的拼盘制作,并分享经验和成果;第四步:学生根据自己的口味和营养需求,设计一周的蔬菜和水果食谱,写成文字或图表形式;第五步:学生选择自己喜欢的蔬菜和水果进行种植,并记录生长过程;第六步:学生参加采摘活动,体验蔬菜和水果的采摘乐趣,并制作相关心得体会。

五、评价方式:1. 学生的报告或海报能够清晰地介绍蔬菜和水果的信息,图片和文字内容充实;2. 学生制作的蔬菜和水果拼盘美观大方,符合审美要求;3. 学生制定的蔬菜和水果食谱合理可行,包含多样的蔬菜和水果搭配;4. 学生种植的蔬菜和水果生长健康,记录详细、清晰;5. 学生采摘活动体验愉悦、表达真情实感。

苹果-桔子问题的实现(2)

苹果-桔子问题的实现(2)

*******************实践教学*******************兰州理工大学计算机与通信学院2013年秋季学期操作系统原理课程设计题目:苹果-桔子问题的实现专业班级:计算机科学与技术姓名:学号:指导教师:王旭阳成绩:_____________本设计实际上是生产者-消费者问题的一种变形。

这里,生产者(父亲和母亲)放入缓冲区(盘子)的产品有两类(苹果和桔子),消费者(女儿和儿子)也有两类,每类消费者只消费其中固定的一类产品。

生产者和消费者共享缓冲区,缓冲区中有空时,生产者可放入产品(不许放重),否则等待。

缓冲区中有产品时,消费者可取出产品(不许取重),否则等待。

关键词:进程同步;PV操作;互斥;信号量摘要 (I)第一章需求分析 (1)1.1吃水果问题的描述 (1)1.2问题的转换 (1)第二章功能设计 (1)2.1 数据结构 (1)2.2模块说明 (2)2.2.1 主函数 (2)2.2.2 4个调度进程函数 (2)2.3 操作的流程图 (3)2.3.1放水果操作 (3)2.3.2取水果操作 (5)2.4 P、V原语的描述 (5)第3章各模块的伪码算法 (7)3.1 算法设计 (7)3.1.1 父亲进程模块 (7)3.1.2 母亲进程模块 (7)3.1.3 儿子进程模块 (8)3.1.5 Print函数 (8)第4章开发平台及程序清单的主要部分 (9)4.1开发平台 (9)第5章运行结果与运行情况分析 (11)5.1运行结果 (11)课程设计总结 (13)参考文献 (14)附录:部分源程序代码 (15)第一章需求分析1.1吃水果问题的描述桌上有一个空盘子,只允许放一个水果。

爸爸专向盘中放苹果,妈妈专向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。

规定当盘空时,一次只能放一个水果。

1.2问题的转换这是进程同步问题的模拟,可以把向盘子放或取水果的每一个过程可以转为一个进程的操作,这些进程是互斥的,同时也存在一定的同步关系。

进程吃水果

进程吃水果

西华大学上机实践报告课程名称:Windows系统编程年级:2011上机实践成绩:指导教师:陈克力姓名:徐千上机实践名称:吃水果问题学号:312011*********上机实践日期:12_04上机实践编号:实验10组号:1上机实践时间:18:30--20:30一、目的1. 掌握多进程间消息通信方式;2. 掌握定时器应用,随即函数的应用;3. 提高项目系统分析与设计方法;二、内容与设计思想吃水果问题介绍:吃水果问题是操作系统中典型的进程间通信问题。

桌上有一个空盘,允许存放20个水果,父母可向盘内随机个数的水果,如果盘子放满了,则等待;孩子等着吃盘内的水果,如果盘子空了,则等着父母放水果。

设计三个基于对话框的进程分别模拟盘子、父母、孩子的行为。

可以实现:(1)盘子进程动态显示盘子里面的水果数量;(2)父母进程中点击开始按钮,每隔5 秒随机往盘子里面放不大于10 个水果;并显示真正放入的水果数;(3)孩子进程中点击开始按钮,每隔2 秒随机从盘子里面取不多于5 个水果;并显示真正取到的水果数量。

实验思想:1. 采用基于对话框的MFC 应用程序;2. 利用自定义消息来实现多个进程间通信:(1)父母放水果时发送一个自定义消息(WM_MSG1),通过消息参数WParam的值(如规定为100 表示放),lParam 的值表示具体放入的水果数量;(2)孩子取水果时发送一个自定义消息消息(WM_MSG2),通过消息参数WParam 的值(如规定为200 表示取),lParam 的值表示具体想取得的水果数量;(3)盘子进程随时响应父母进程或孩子进程的消息,并进行判断处理:父母放时要判断盘子是否满,并发送一条自定义消息(WM_MSG3)给父母表明实际放入的水果数;孩子取时要判断盘子是否为空,并发送一条自定义消息(WM_MSG4)给孩子表明实际取得的水果数;(4)父母或孩子把盘子返回的消息显示在各自的对话框中;3. 父母或孩子的行为可以用定时器消息来完成。

仿真水果与蔬菜教案

仿真水果与蔬菜教案

仿真水果与蔬菜教案教案标题:仿真水果与蔬菜教案教案目标:1. 通过仿真水果与蔬菜的教学,培养学生对水果和蔬菜的认知能力。

2. 培养学生对不同水果和蔬菜的外观、颜色、形状等特征的观察和辨认能力。

3. 培养学生对水果和蔬菜的营养价值的认识和重视。

4. 培养学生对水果和蔬菜的种植、采摘和加工过程的了解。

教学准备:1. 仿真水果和蔬菜模型(可以使用塑料或布制成的仿真水果和蔬菜)。

2. PowerPoint或其他多媒体设备。

3. 图片或海报展示不同种类的水果和蔬菜。

4. 水果和蔬菜的样本(新鲜水果和蔬菜)。

5. 活动材料,如颜色铅笔、纸张等。

教学步骤:1. 引入(5分钟)a. 使用多媒体设备展示一些水果和蔬菜的图片,引起学生的兴趣。

b. 向学生提问,让他们分享自己最喜欢的水果和蔬菜,并解释为什么喜欢。

2. 仿真水果和蔬菜的观察(15分钟)a. 准备一些仿真水果和蔬菜模型,并将其放在课桌上。

b. 让学生观察这些仿真水果和蔬菜,让他们描述每个模型的外观、颜色和形状。

c. 引导学生发现不同的水果和蔬菜有不同的形状和颜色。

3. 水果和蔬菜的分类(15分钟)a. 使用多媒体设备展示一些常见的水果和蔬菜的图片。

b. 让学生根据外观、颜色和形状等特征将这些水果和蔬菜进行分类。

c. 引导学生讨论他们的分类标准,并解释为什么选择这些标准。

4. 水果和蔬菜的营养价值(15分钟)a. 展示一些水果和蔬菜的样本,并解释它们的营养价值。

b. 让学生分享他们对水果和蔬菜的认识和了解,包括它们对人体健康的重要性。

c. 引导学生讨论如何在日常饮食中增加水果和蔬菜的摄入量。

5. 水果和蔬菜的种植与加工(15分钟)a. 使用多媒体设备展示水果和蔬菜的种植和采摘过程的图片或视频。

b. 让学生了解水果和蔬菜的种植环境、生长周期和采摘时间等。

c. 引导学生讨论水果和蔬菜的加工过程,如清洗、切割和烹饪等。

6. 总结与评价(5分钟)a. 让学生总结他们在本节课中学到的关于水果和蔬菜的知识。

操作系统-吃水果问题

操作系统-吃水果问题

操作系统-吃水果问题操作系统-吃水果问题1、引言本文档描述了一个操作系统的模拟问题-吃水果问题。

该问题涉及到多个进程同时对有限数量的水果资源进行访问的情况。

我们将介绍该问题的背景、目标和关键概念。

2、背景吃水果问题模拟了现实生活中多个进程同时访问共享资源的情况。

在该问题中,不同的进程可以同时访问一定数量的水果资源。

然而,由于水果资源有限,进程必须遵守特定的规则以确保公平访问。

3、目标该问题的目标是设计一种算法,使得不同的进程能够共享有限的水果资源。

我们的目标是确保进程之间的公平访问,并通过合适的同步机制来避免产生竞争条件和死锁。

4、关键概念4.1 进程(Process)进程是计算机中正在运行的程序的实例。

在吃水果问题中,每个进程代表一个人,这些人需要同时访问共享的水果资源。

4.2 共享资源(Shared Resource)共享资源是多个进程可能同时访问的资源。

在吃水果问题中,水果资源是共享资源,被多个进程同时竞争。

4.3 同步机制(Synchronization Mechanism)同步机制用于控制多个进程对共享资源的访问。

在吃水果问题中,我们需要设计一种同步机制来确保进程之间的公平访问和避免竞争条件。

5、解决方案5.1 问题分析首先,我们需要确定问题的规模和要求。

包括进程数量、水果资源数量以及对公平访问的要求等。

5.2 同步机制设计我们可以采用多种同步机制来解决吃水果问题,例如互斥锁、条件变量等。

在设计同步机制时,需要考虑到公平性、死锁避免和性能等方面的因素。

5.3 算法实现根据设计的同步机制,我们需要实现相应的算法来解决吃水果问题。

这个算法应该能够正确地控制进程对资源的访问,并满足公平访问和避免死锁的要求。

6、测试与调试在实现算法之后,我们需要进行测试和调试来确保算法的正确性和性能。

包括编写测试用例、模拟并发情况和调整参数等。

7、结论通过本文档,我们介绍了操作系统中的吃水果问题,并提供了解决该问题的解决方案。

数学建模竞赛--瓜果体积的估计问题

数学建模竞赛--瓜果体积的估计问题

2012年第八届大学生数学建模竞赛C题:瓜果体积的估计问题首先想问大家一个问题:在水果店里,如果老板奖励你一次任意拿水果的机会,你将怎样选择?假如质量都是一样,但形状差异很大,又怎样合适选择呢?下面就走进我们的建模吧!摘要体积和重量常用来衡量果实大小,且以体积为更佳,如果我们能精确的估计出不同形状水果的大小,并能找到一个固定模式,当我们买水果的时候,只要我们通过测量几个长度就能估算出其体积,选择出最大的那个。

那么,我们怎样只通过软尺测量一些参数值就可以估计该瓜呢?对于我们经常见到的各种各样的瓜果,如萝卜、南瓜、茄子、番茄、香蕉、西瓜等等,虽然其形状千奇百怪,重量也有很大差异。

但当我们学习了数学和计算机后,我们就可以通过数学知识建立模型应用计算机的优点将其性质计算出来。

因此我们建立的模型思路是:取西瓜萝卜各一筐,然后分别对其形状进行分类,可得出简单结论:西瓜可以近似看成椭球体形,萝卜可以近似看成抛物线椭球体形。

对不同的西瓜其对应三半径(横半径·纵半径·竖半径,其值大小可以通过软尺测出,最好是将西瓜均匀切开,但由于经济条件就选择了体外直接测量)在变,从而其形状就不同。

因此我们分别随机选取十组具有代表性大小形状的西瓜和萝卜,最后通过积分知识估计出体积和总量大小,分别将其与排液方法秤重法对应得出的数据进行分析,应用计算机编程软件得出它们之间的关系,从而得出模型。

总之,本文中的模型具有一般性和推广性,但只对同类水果有参考价值,只要所给数据信息量足够、准确,模型求出的结果将具有更好的实际意义。

关键词:形状大小半径积分编程一问题的提出1、选定2-3种瓜果,每种瓜果制定一些测量标准(可以自己命名参数),依据其形状特征,通过你所学过的和资料上介绍的各种几何体的体积计算方法给出综合计算模型;要求有一般性模型,同时对每种瓜果要给出若干不同大小样本的理论估计值(用你的模型算出的值);2、利用物体在液体中排开体积的较为精确计算方法分析1中模型的误差,评价模型的优劣(此问题可以利用其他测量工具,如量杯等);3、选定2-3种瓜果,每种瓜果选取不同大小的样本若干(有条件的情况下越多越好),制定一些测量标准,测出其相关参数值(用软尺),再用排液法和秤重法分别测出这些样本相应的体积和重量,建立数据表。

水果问题运用数学解决实际生活中的分组问题

水果问题运用数学解决实际生活中的分组问题

水果问题运用数学解决实际生活中的分组问题在我们日常的生活中,分组是一种很常见的现象。

无论是班级分组、运动队分组还是其他各种场合的分组,都需要我们合理地安排和组织。

在这个过程中,数学可以帮助我们解决实际生活中的分组问题,其中涉及到了一种经典的数学方法,即组合数学。

一、组合数学的介绍组合数学是数学中的一个分支,研究的是离散对象的集合组合方法。

在分组问题中,我们可以使用组合数学的方法来解决。

组合数学涉及到的一种基本概念是组合,它表示从一组对象中选取若干个对象的方式。

在组合数学中,有两个重要的数学公式,即排列和组合。

排列公式表示从n个对象中选取r个对象并进行排列的方法数,是P(n,r)=n!/(n-r)!,其中n!表示n的阶乘。

组合公式表示从n个对象中选取r个对象的方法数,是C(n,r)=n!/(r!(n-r)!)。

二、分组问题的具体应用分组问题在我们的生活中有很多应用场景,其中一个典型的例子是水果分组。

假设我们有n个水果,要将它们均匀地分配到m组中,每组至少有一个水果。

那么我们可以通过组合数学的方法来计算出满足条件的分组方案数。

首先,我们需要确定每个分组中的水果数量。

假设每组至少有一个水果,那么我们可以将剩下的n-1个水果进行分配。

根据组合公式,我们知道从n-1个水果中选取m-1个水果进行分配的方法数是C(n-1,m-1)。

然而,我们还需要考虑到每组中水果的具体排列方式。

这里涉及到排列公式,即从每组中选取的水果进行排列的方法数是P(m,r)。

因此,我们最终的分组方案数是C(n-1,m-1) * P(m,r)。

三、实际案例分析为了更好地理解和应用这个方法,我们可以通过一个具体的案例来进行分析。

假设我们有8个水果(苹果、橙子、香蕉、葡萄、西瓜、草莓、梨子、桃子)要分配到4个组中,每组至少有一个水果。

那么我们可以使用组合数学的方法来计算出满足条件的分组方案数。

首先,我们需要将8个水果中的一个分配到每个组中,这样每组都至少有一个水果。

综合实践活动案例《水果的奥秘》

综合实践活动案例《水果的奥秘》

《水果的奥秘》综合实践活动案例一、活动主题的提出:为了培养学生结合生活实际进行研究 ,通过亲身实践获取直接经验,提高学生解决生活实际问题的能力 ,我们从学生接触的生活实际出发,从学生熟悉和关注的社会生活中选取主题。

把学生所学的知识与实际生活联系起来,并尊重每一个学生的兴趣、爱好与特长,引导学生自己从日常生活中选取探究的课题或问题。

现在正是水果繁多的季节,许多学生既熟悉水果,但又缺乏水果知识,“了解自己喜欢的水果”正是学生所渴望探究的问题。

根据这一实际情况,经过全班同学热烈讨论,一致同意以探究“水果的奥秘”为主题,开展一系列探究性活动。

二、活动的具体目标:知识目标:1、了解水果的特征及水果有关的小常识,并对自我学习研究的内容有一定认识。

2、在小组合作中形成共同意识,勇于在自己组内的研究中充当主要角色。

3、加强交流,在跨组交流中实现资源共享,使双方达到“双赢”能力目标:1、培养孩子们一般认识事物的能力,包括观察能力、比较分析能力和思维能力等等。

2、让学生经历收集资料和整理资料的过程,培养学生调查、搜索、整理的综合能力。

3、培养学生发现问题、研究问题、解决问题的能力及勇于探索的精神。

情感目标:1、激励学生在集体中进行创新学习,学会探究、与他人合作,体验与人合作、交流的乐趣。

2、通过参与此次社会实践的调查活动,锻炼口才,提高社会交际能力,激发学生探究事物的兴趣。

三、活动的具体过程:(一)活动准备:1、明确活动目标、自愿组成小组:在成立小组时,我尊重学生的选择,让学生自愿组成小组。

2、制定活动计划:学生自由组成小组后,每个小组通过讨论的方式制定了活动计划。

布置每个人的任务,使学生明确了分工和活动步骤,养成了做事有计划的好习惯。

3、聘家长为活动辅导员:聘请家长为活动辅导员,让家长带孩子参观果园,与他们一起查找有关水果的一些资料,教孩子练习怎样用刀,怎样切、雕……等一些简单的操作,制作水果拼盘。

(二)活动过程及方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

进程同步模拟设计——吃水果问题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模块说明(1)main函数:用一个随机的函数产生0—5的6个整数,分别对应六个进程的调用,调用的次数可以自己输入,本程序共产生了10次随机的调用进程。

(2)6个进程函数:爸爸向盘子中放一个苹果操作:Father();妈妈向盘子中放一个橘子操作:Mother();儿子1从盘子取一个橘子操作:Son1();儿子2从盘子取一个橘子操作:Son2();女儿1从盘子取一个橘子操作:Daugther1();女儿2从盘子取一个橘子操作:Daugther2()。

(3)Print函数:用于输出盘子中苹果和橘子的个数,水果总个数及有哪些进程处于等待状态。

2.3 操作的流程图(1)放水果操作爸爸放苹果进程的操作流程图:(2)取水果操作儿子1取橘子的操作流程图Father 操作:Plate_Size=2否否Daugther1或Daugher2处于等待状态是按等待先后顺序调用Daugther1或Daughter2操作是Father 进程处于等待状态Father 进程调用:orange+1 Plate_Size+1,Print()函数调用返回3开发平台及源程序的主要部分3.1开发平台(1)使用系统:windows7 (2)使用语言:C++(3)开发工具:Microsoft Visual C++ 2012 Express3.2源程序主要部分(1)Print 函数(打印盘子剩余水果及各进程等待状态)void Print() {Son1操作:Plate_Size=2否否Daugther1或Daugher2处于等待状态是按等待先后顺序调用Daugther1或Daughter2操作是Father 进程处于等待状Father 进程调用:orange+1 Plate_Size+1,Print()函数调用返回cout<<"现在盘子里有"<<apple<<"个苹果,"<<orange<<"个橘子,"<<"共有"<<apple+orange<<"个水果."<<endl;if(Father_lag==true)cout<<"Father进程处于等待状态,";if(Mother_lag==true)cout<<"Mother进程处于等待状态,";if(Son1_lag==true)cout<<"Son1进程处于等待状态,";if(Son2_lag==true)cout<<"Son2进程处于等待状态, ";if(Daughter1_lag==true)cout<<"Daughter1进程处于等待状态,";if(Daughter2_lag==true)cout<<"Daughter2进程处于等待状态,";if(((Father_lag==false)&&(Mother_lag==false)&&(Son1_lag==false)&&(Son2_lag==false)&&(Daughter1_lag==false)&&(Daughter2_lag==false))!=true)cout<<endl;}(2)各进程调用的函数void Father() {apple++;Print();}void Mother(){orange++;Print();}void Son1() {orange--;Print();}void Son2() {orange--;Print();}void Daughter1() {apple--;Print();}void Daughter2(){apple--;Print();}(3)主函数void main(){int k;int i;int Plate_Size;int MonFa_c;int Son_a;srand((unsigned)time(NULL));for(k=0;k<10;k++){cout<<"***********************************"<<"第"<<k+1<<"次操作"<<"***********************************"<<endl;i=rand()%6;Plate_Size=apple+orange;switch(i){case 0:cout<<"Father调用."<<endl;if(Plate_Size==2){Father_lag=true;Print();if(Mother_lag==false)MonFa_c=1;}else{Father();if((Daughter1_lag==true)&&(Daughter2_lag==true)){if(Daughter_b==1){Daughter1_lag=false;cout<<"处于等待的Daughter1自动被调用"<<endl;Daughter1();Daughter_b=2;}else{Daughter2_lag=false;cout<<"处于等待的Daughter2自动被调用"<<endl;Daughter2();Daughter_b=1;}}else{if(Daughter1_lag==true){Daughter1_lag=false;cout<<"处于等待的Daughter1自动被调用"<<endl;Daughter1();Daughter_b=0;}else if(Daughter2_lag==true){Daughter2_lag=false;cout<<"处于等待的Daughter1自动被调用"<<endl;Daughter2();Daughter_b=0;}}}break;case 1:cout<<"Mother调用."<<endl;if(Plate_Size==2){Mother_lag=true;Print();if(Father_lag==false)MonFa_c=2;}else{Mother();if((Son1_lag==true)&&(Son2_lag==true)){if(Son_a==1){Son1_lag=false;cout<<"处于等待的Son1自动被调用"<<endl;Son1();Son_a=2;}else{Son2_lag=false;cout<<"处于等待的Son2自动被调用"<<endl;Son2();Son_a=1;}}else{if(Son1_lag==true){Son1_lag=false;cout<<"处于等待的Son1自动被调用"<<endl;Son1();Son_a=0;}else if(Son2_lag==true){Son2_lag=false;cout<<"处于等待的Son2自动被调用"<<endl;Son2();Son_a=0;}}}break;case 2:cout<<"Son1调用."<<endl;if(orange==0){Son1_lag=true;Print();if(Son2_lag==false)Son_a=1;}else{Son1();if((Father_lag==true)&&(Mother_lag==true)){if(MonFa_c==1) {Father_lag=false;cout<<"处于等待的Father自动被调用"<<endl;Father();MonFa_c=2;}else{Mother_lag=false;cout<<"处于等待的Mother自动被调用"<<endl;Mother();MonFa_c=1;}}else{if(Father_lag==true){Father_lag=false;cout<<"处于等待的Father自动被调用"<<endl;Father();MonFa_c=0;}else if(Mother_lag==true){Mother_lag=false;cout<<"处于等待的Mother自动被调用"<<endl;Mother();MonFa_c=0;}}}break;case 3:cout<<"Son2调用."<<endl;if(orange==0){Son2_lag=true;Print();if(Son1_lag==false)Son_a=2;}else{Son2();if((Father_lag==true)&&(Mother_lag==true)){if(MonFa_c==1) {Father_lag=false;cout<<"处于等待的Father自动被调用"<<endl;Father();MonFa_c=2;}else {Mother_lag=false;cout<<"处于等待的Mother自动被调用"<<endl;Mother();MonFa_c=1;}}else{if(Father_lag==true){Father_lag=false;cout<<"处于等待的Father自动被调用"<<endl;Father();MonFa_c=0;}else if(Mother_lag==true) {Mother_lag=false;cout<<"处于等待的Mother自动被调用"<<endl;Mother();MonFa_c=0;}}}break;case 4:cout<<"Daughter1调用."<<endl;if(apple==0){Daughter1_lag=true;Print();if(Daughter2_lag==false)Daughter_b=1;}else{Daughter1();if((Father_lag==true)&&(Mother_lag==true)){if(MonFa_c==1) {Father_lag=false;cout<<"处于等待的Father自动被调用"<<endl;Father();MonFa_c=2;}else {Mother_lag=false;cout<<"处于等待的Mother自动被调用"<<endl;Mother();MonFa_c=1;}}else{if(Father_lag==true) {Father_lag=false;cout<<"处于等待的Father自动被调用"<<endl;Father();MonFa_c=0;}else if(Mother_lag==true) {Mother_lag=false;cout<<"处于等待的Mother自动被调用"<<endl;Mother();MonFa_c=0;}}}break;case 5:cout<<"Daughter2调用."<<endl;if(apple==0){Daughter2_lag=true; Print();if(Daughter1_lag==false)Daughter_b=2;}else{Daughter2();if((Father_lag==true)&&(Mother_lag==true)){if(MonFa_c==1) {Father_lag=false;cout<<"处于等待的Fathe r自动被调用"<<endl;Father();MonFa_c=2;}else{Mother_lag=false;cout<<"处于等待的Mother自动被调用"<<endl;Mother();MonFa_c=1;}}else {if(Father_lag==true) {Father_lag=false;cout<<"处于等待的Father自动被调用"<<endl;Father();MonFa_c=0;}else if(Mother_lag==true) {Mother_lag=false;cout<<"处于等待的Mother自动被调用"<<endl;Mother();MonFa_c=0;}}}break;}}}4测试用例,运行结果与运行情况分析4.1测试用例由于程序是模拟产生10次随机的操作,执行相应的函数来模拟进程同步。

相关文档
最新文档