1、 操作系统课程设计报告 院(系) :院(系) : 计算机工程学院 专业:专业: 计算机科学与技术专业 学 生 姓名学 生 姓名: : 班级:班级: 学号学号: 题目题目: 用多进程同步方法演示“桔子-苹果”问题_ 起迄日期起迄日期: 2012.07.02-2012.07.13 _ 设计地点设计地点: 现代教育中心 指指 导导 教教 师师: 熊晓芸 20112012 年度 第 2 学期 完成日期: 2012 年 7 月 13 日 - 1 - 一、一、 课程设计目的课程设计目的 本次实验进行操作系统课程设计的主要任务是模拟生产者和消费者的一个衍生, 即 实现“橘子-苹果问题” 。这个问题中有两个生
2、产者,分别生产苹果核橘子,有两个消费 者,分别消费橘子和苹果。同时,因为两个生产者和两个消费者对同一个缓冲区进行操 作, 所以应互斥的访问缓冲区以保证程序的正确性。 本次实验的目的就是加深各个进程 正确有效的对资源的访问,即同步和互斥。同时掌握信号量在互斥访问中的使用。掌握 生产者和消费者问题的流程和实现方法。 同时提高编程的能力、 对问题的解决能力及查 阅文档的能力。 二、二、 课程设计内容与要求课程设计内容与要求 1、通过研究 Linux 的进程同步机制和信号量,实现特殊的生产者与消费者问题的并发控 制。 2、说明:有两类生产者,一类负责生产桔子,一类负责生产苹果;有两类消费者,一类 负责
3、消费桔子,一类负责消费苹果;他们共享一个有 20 个存储单元的有界缓冲区,每个存 储单元只能放入一种产品(桔子/苹果) 。 3、设计要求: 1) 二类生产者与二类消费者数目均为 20,即 20 个生产者负责生产桔子,20 个生产者 负责生产苹果;20 个消费者负责消费桔子,20 个消费者负责消费苹果 2) 二类生产者的生产速度与二类消费者的消费速度均可独立在程序界面调节,在运行 中,该值调整后立即生效 3) 多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码,同时需要 考虑算法的效率性 4) 每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、 当前生产者与消费
4、者的指针位置,以及生产者和消费者线程标识符 5) 采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓 冲区的状态 三、三、 系统系统分析与设分析与设计计 1、系统分析系统分析 1.此次任务是实现特殊生产者和消费者的演示程序,所需要处理的信息是生产者和消费 者的个数,生产苹果、橘子和消费苹果、橘子的速度控制,缓冲区中橘子和苹果的个数和当 前生产、消费指针的位置。 2.程序中需要处理缓冲区的动态显示、生产者和消费者的速度可以调节,生产者和消费 者个数可以改变。为了实现界面的友好性,应该对用户标明清楚各个模块的作用。同时实时 的对程序进行暂停和停止。 演示程序中用图形显示的方法描述缓冲区的使用情况, 即当前缓 冲区有多少个苹果和橘子,还有生产和消费者的指针。 3.系统对外的界面如下: 可以调节橘子和苹果的生产速度和消费苹果和橘子的速度,在文本框中输入相应的速 度,再按下修改按键即可实现速度的实时调节。 在