欢迎来到天天文库
浏览记录
ID:9290222
大小:29.21 KB
页数:38页
时间:2018-04-26
《多进程同步橘子苹果问题完整报告(附源代码)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、多进程同步橘子苹果问题完整报告(附源代码)一、课程设计目的本次实验进行操作系统课程设计的主要任务是模拟生产者和消费者的一个衍生,即实现“橘子-苹果问题”。这个问题中有两个生产者,分别生产苹果核橘子,有两个消费者,分别消费橘子和苹果。同时,因为两个生产者和两个消费者对同一个缓冲区进行操作,所以应互斥的访问缓冲区以保证程序的正确性。本次实验的目的就是加深各个进程正确有效的对资源的访问,即同步和互斥。同时掌握信号量在互斥访问中的使用。掌握生产者和消费者问题的流程和实现方法。同时提高编程的能力、对问题的解决能力及查阅文档的能力。二、课程设计内容与要求1、通过研究Linux的进程同步机制和信
2、号量,实现特殊的生产者与消费者问题的并发控制。2、说明:有两类生产者,一类负责生产桔子,一类负责生产苹果;有两类消费者,一类负责消费桔子,一类负责消费苹果;他们共享一个有20个存储单元的有界缓冲区,每个存储单元只能放入一种产品(桔子/苹果)。3、设计要求:1)二类生产者与二类消费者数目均为20,即20个生产者负责生产桔子,20个生产者负责生产苹果;20个消费者负责消费桔子,20个消费者负责消费苹果2)二类生产者的生产速度与二类消费者的消费速度均可独立在程序界面调节,在运行中,该值调整后立即生效3)多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码,同时需要考虑算法的效率
3、性4)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前生产者与消费者的指针位置,以及生产者和消费者线程标识符5)采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓冲区的状态三、系统分析与设计1、系统分析1.此次任务是实现特殊生产者和消费者的演示程序,所需要处理的信息是生产者和消费者的个数,生产苹果、橘子和消费苹果、橘子的速度控制,缓冲区中橘子和苹果的个数和当前生产、消费指针的位置。2.程序中需要处理缓冲区的动态显示、生产者和消费者的速度可以调节,生产者和消费者个数可以改变。为了实现界面的友好性,应该对用户标明清楚各个模块的作用。同时
4、实时的对程序进行暂停和停止。演示程序中用图形显示的方法描述缓冲区的使用情况,即当前缓冲区有多少个苹果和橘子,还有生产和消费者的指针。3.系统对外的界面如下:可以调节橘子和苹果的生产速度和消费苹果和橘子的速度,在文本框中输入相应的速度,再按下修改按键即可实现速度的实时调节。在苹果生产者、橘子生产者、苹果消费者、橘子消费者中实现对个数按钮的按下即可动态实时的调节生产者和消费者的个数的调节。在界面的最下面点击开始按钮,程序开始运行,暂停按钮使程序暂停挂起,再点击则可以继续运行。停止按钮实现此次程序的演示结束。4.此次使用java平台实现,保证了程序在各种机器的运行,只需要事前建立java
5、的运行环境即可,便于程序的移植5.系统界面如下:2、系统设计:2.1、模块设计:2.2、数据结构说明:1.缓冲区的数据结构:双端队列说明:左端放置生产苹果的指针,右端放置生产橘子的指针。2.缓冲区操作的类图,实现对缓冲区的实际操作2.3、算法流程图:1.生产苹果算法2.消费苹果算法3.绘图算法4.生产苹果者人工智能算法(生产橘子人工智能相似)5.苹果消费者人工智能算法(生产橘子算法类似)四、系统测试与调试分析1、系统测试(1)因为当苹果生产者在缓冲区满了以后自动阻塞,需要苹果消费者唤醒,所以需要测试(2)因为当苹果生产者在缓冲区满了以后自动阻塞,需要苹果消费者唤醒,所以需要测试(3
6、)测试生产者和消费者的速度是否可以调节(4)实现了人工智能操作:即系统自动保持生产者和消费者的相对平衡,测试功能的正确实现2、调试分析:(1)程序编写过程中,因为有两个生产者和消费者,极易把操作写错。在编写增加苹果数量额函数中,程序中午无法增加苹果数量。解决办法:在函数中查找错误,对苹果的操作写成了对橘子的操作,导致程序出现问题。(2)在对缓冲区进行绘图的时候,java的JComponent组件内绘图位置出现错误。解决办法:JComponent内绘图时因为JComponent内使用的是相对坐标,所以不能使用面板的绝对坐标,换成相对坐标正确绘图。(3)实现人工智能操作的时候,点击相应
7、按钮无法执行解决办法:在排查完毕后,发现按键响应没有对程序已经设计的标志值进行修改,致使程序没有按预期执行,修改完标志值即可以。五、用户手册1.使用的语言和平台本次实验使用的是java语言的eclipse平台2.对于程序运行环境的注意事项需要安装java运行环境,eclipss平台不需要安装,只需要下载完成就可以使用。3.程序使用步骤图1:系统登录界面。图2:生产者速度调节图3:消费者速度调节图4:生产者数量调节图5:消费者数量调节图6::控制界面图7:动态可视化缓冲
此文档下载收益归作者所有