“生产者—消费者”问题的模拟系统操作系统课程设计目的及意义通过模拟经典的“生产者—消费者问题”,巩固在操作系统原理课上所学的知识,加深对操作系统中实现同步、互斥。并发的方法、临界区管理等问题的认识和理解,同时了解软件设计的流程、方法以及思想,提高分析设计以及编程的能力。功能设计:开始界面设计生产者、消费者数目,及缓冲区大小点击开始模拟观察模拟情况,按需要调整生产或消费速度点击分析按钮查看统计分析数据退出系统结构设计(1):在本模拟系统中,使用者需要设定生产者个数,消费者个数,缓冲区大小等参数,即可开始模拟。结构设计(2):试用期间用户可以选择改变两者的相对速度来进行测试,观察结果是否为预测结果。最后,使用者还可以点击分析按钮进行实验结果统计分析。结构设计(3):生产者—消费者多生产者多消费者同步互斥并发可视化P()/V()P()/V()多线程JavaSwing和awtThreadJava中的wait()和notify()核心技术和技术路线(1):关键问题:•如何模拟生产者消费者之间的同步关系•如何模拟生产者消费者相互之间的之间互斥关系•如何模拟操作系统中进程的并发与共享环境•如何控制各线程对临界资源有序的访问核心技术和技术路线(2):解决上述问题的核心技术:•定义一个信号量类,在此类中实现模拟P,V操作的函数以实现对两者间同步关系进行控制。•定义一个Buffer类,便于控制和统计分析。•利用Java中的wait()与notify()来实现P/V操作。•利用Java中的多线程,模拟并发操作系统中的并发环境。P线程C线程缓冲区如果缓冲区不满如果缓冲区不空P、C线程访问缓冲区受互斥信号量mutex控制进度安排:•寒假期间:确定课题项目,商讨选用何种设计语言,完成程序框架及基本结构和类的整体设计。•2月20日—3月1日:完成设计考核幻灯片的制作,完成各类方法的编写,完成核心程序并进行基本测试。•3月2日—3月5日:完善核心程序,优化数据结构,初步进行图形化界面的编写。•3月6日—3月10日:完成用户界面程序并进行测试和改进。完成期间各个总结汇报幻灯片。•3月11—结束:综合测试,撰写总结汇报。提交论文。人员安排:•负责核心算法的设计和关键数据结构的实现,搭建模拟系统的整体框架,并为组员分配工作任务。•负责完成类中方法的实现,并对各模块函数进行测试。•)负责图形界面设计和实现,改善各模块函数使之适合图形界面。•注:每人都负责一项汇报PPT的制作(共三个),最后共同完成实验报告和论文的撰写。创新之处:•(1)采用Java程序设计语言,其多线程程序设计可模拟操作系统的并发环境•(2)用Java中的wait()和notify()来模拟P、V操作•(3)用进度条和滑动竿比较形象和准确的描述模拟结果。