长 治 学 院 课程设计报告 课程名称: 操作系统课程设计 设计题目: 进程同步模拟—吃水果问题 系 别: 计算机系 专 业: 计算机科学与技术 组 别: 第八组 学生姓名: 韩伟伟 学 号: 08407106 起止日期: 2011 年 6 月 7 日 ~ 2011 年 6 月 22 日 指导教师: 王崇霞 2 目录 1需求分析 ............................................... 3 1.1吃水果问题的描述 ................................... 3 1.2问题的转换 ........................................ 3 2功能设计 ............................................... 4 2.1 数据结构 .......................................... 4 2.2模块说明 .......................................... 4 2.3 操作的流程图 ...................................... 5 3开发平台及源程序的主要部分 .............................. 6 3.1开发平台 .......................................... 6 3.2源程序 ............................................ 7 4测试用例,运行结果与运行情况分析 ....................... 16 4.1测试用例 ......................................... 16 4.2运行结果 ......................................... 16 5自我评价与总结 ........................................ 17 3 进程同步模拟设计 ——吃水果问题 1 需求分析 1.1吃水果问题的描述 桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。 1.2问题的转换 这是进程同步问题的模拟,可以把向盘子放或取水果的每一个过程可以转为一个进程的操作,这些进程是互斥的,同时也存在一定的同步关系。通过编程实践时,实际是随机的调用人一个进程的操作,而这些进程的操作相当于程序中的函数调用。而计算机在执行时每一个时刻只能执行一个操作,这就默认了互斥。同步的模拟可以类似于函数调用时的前提关系即先决条件。这样进程同步模拟就完全可以通过函数的调用来实现。 具体的每一个操作的对应的函数的关系: 爸爸向盘子中放一个苹果:Father() 妈妈向盘子中放一个橘子:Mother() 儿子1 从盘子取一个橘子:Son1() 儿子2 从盘子取一个橘子:Son2() 女儿 1 从盘子取一个橘子...