沈阳理工大学课程设计专用纸 1 目 录 1 题目内容及要求 ............................................................................ 2 1 .1 题目名称 ................................................................................. 2 1 .2 题目描述 ................................................................................. 2 1 .3 解题思路 ................................................................................. 2 1 .4 程序清单 ................................................................................. 6 1 .5 提交结果框图 ....................................................................... 1 6 2 总结 .............................................................................................. 2 0 3 参考文献 ...................................................................................... 2 0 沈阳理工大学课程设计专用纸 2 1 题目内容及要求 1.1 题目名称 进程同步模拟设计:吃水果问题 1.2 题目描述 桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果。爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,两个儿子专门等待吃盘子中的橘子,两个女儿专门等吃盘子中的苹果。 1.3 解题思路 将问题转换为信号量上的资源分配类型问题: 这是进程同步问题的模拟,可以把向盘子放或取水果的每一个过程可以转为一个进程的操作,这些进程是互斥的,同时也存在一定的同步关系。通过编程实践时,实际是随机的调用人一个进程的操作,而这些进程的操作相当于程序中的函数调用。而计算机在执行时每一个时刻只能执行一个操作,这就默认了互斥。同步的模拟可以类似于函数调用时的前提关系即先决条件。这样进程同步模拟就完全可以通过函数的调用来实现。 具体的每一个操作的对应的函数的关系: 爸爸向盘子中放一个苹果:Father() 妈妈向盘子中放一个橘子:Mother() 儿子1 从盘子取一个橘子:Son1() 儿子2 从盘子取一个橘子:Son2() 女儿 1 从盘子取一个苹果:Daugther1() 儿子1 从盘子取一个苹果:Daugther2() 沈阳理工大学课程设计专用纸 3 具体实现方案: (1)用一个整型变量Plate_Size表示盘子,初始值为0,当放水果时Plate_Size加1,取水果时Plate_Size减1。变量Plate_Siz...