欢迎来到天天文库
浏览记录
ID:50809996
大小:253.00 KB
页数:42页
时间:2020-03-14
《多进程同步橘子苹果问题完整报告(附源代码).doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一、课程设计目的本次实验进行操作系统课程设计的主要任务是模拟生产者和消费者的一个衍生,即实现“橘子-苹果问题”。这个问题中有两个生产者,分别生产苹果核橘子,有两个消费者,分别消费橘子和苹果。同时,因为两个生产者和两个消费者对同一个缓冲区进行操作,所以应互斥的访问缓冲区以保证程序的正确性。本次实验的目的就是加深各个进程正确有效的对资源的访问,即同步和互斥。同时掌握信号量在互斥访问中的使用。掌握生产者和消费者问题的流程和实现方法。同时提高编程的能力、对问题的解决能力及查阅文档的能力。二、课程设计内容
2、与要求1、通过研究Linux的进程同步机制和信号量,实现特殊的生产者与消费者问题的并发控制。2、说明:有两类生产者,一类负责生产桔子,一类负责生产苹果;有两类消费者,一类负责消费桔子,一类负责消费苹果;他们共享一个有20个存储单元的有界缓冲区,每个存储单元只能放入一种产品(桔子/苹果)。3、设计要求:1)二类生产者与二类消费者数目均为20,即20个生产者负责生产桔子,20个生产者负责生产苹果;20个消费者负责消费桔子,20个消费者负责消费苹果2)二类生产者的生产速度与二类消费者的消费速度均可独立
3、在程序界面调节,在运行中,该值调整后立即生效3)多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码,同时需要考虑算法的效率性4)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前生产者与消费者的指针位置,以及生产者和消费者线程标识符5)采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓冲区的状态三、系统分析与设计1、系统分析1.此次任务是实现特殊生产者和消费者的演示程序,所需要处理的信息是生产者和消费者的个数,生产苹果、橘子和消费苹果、
4、橘子的速度控制,缓冲区中橘子和苹果的个数和当前生产、消费指针的位置。2.程序中需要处理缓冲区的动态显示、生产者和消费者的速度可以调节,生产者和消费者个数可以改变。为了实现界面的友好性,应该对用户标明清楚各个模块的作用。同时实时的对程序进行暂停和停止。演示程序中用图形显示的方法描述缓冲区的使用情况,即当前缓冲区有多少个苹果和橘子,还有生产和消费者的指针。3.系统对外的界面如下:可以调节橘子和苹果的生产速度和消费苹果和橘子的速度,在文本框中输入相应的速度,再按下修改按键即可实现速度的实时调节。在苹果
5、生产者、橘子生产者、苹果消费者、橘子消费者中实现对个数按钮的按下即可动态实时的调节生产者和消费者的个数的调节。在界面的最下面点击开始按钮,程序开始运行,暂停按钮使程序暂停挂起,再点击则可以继续运行。停止按钮实现此次程序的演示结束。4.此次使用java平台实现,保证了程序在各种机器的运行,只需要事前建立java的运行环境即可,便于程序的移植5.系统界面如下:动态显示区程序速度控制区生产者和消费者数字调节开始、暂停、终止按键区2、系统设计:2.1、模块设计:系统主模块主界面模块生产者控制模块消费者控
6、制模块块有界缓冲区控制模块人工智能模块主界面模块绘图模块动态进度条生产者数目调节消费者数目调节生产者速度调节消费者速度调节2.2、数据结构说明:1.缓冲区的数据结构:双端队列说明:左端放置生产苹果的指针,右端放置生产橘子的指针。缓冲区苹果指针橘子指针2.缓冲区操作的类图,实现对缓冲区的实际操作缓冲区MyStorage生产苹果increaseapple()生产橘子increaseorange()消费苹果decreaseapple()消费橘子decreaseorange()缓冲区状态isFull互斥
7、信号量mutex同步信号量emptyfull苹果指针pointapple橘子指针pointorange2.3、算法流程图:1.生产苹果算法申请空缓冲区信号量empty大于0pointapple=pointapple+1isFull[applepoint]=truePool[pointapple]=1打印缓冲区状态apple=apple+1full=full+1释放缓冲区线程阻塞NY2.消费苹果算法申请空缓冲区full=full+1信号量full大于0pointapple=pointapple-1
8、isFull[applepoint]=falsePool[pointapple]=0打印缓冲区状态apple=apple-1empty=empty+1释放缓冲区线程阻塞YN3.绘图算法i=i+1i<20?pool[i]=0pool[i]=1填充红色填充黄色画矩形画指针i=-14.生产苹果者人工智能算法(生产橘子人工智能相似)进入缓冲区缓冲区产品数<16苹果>=16增加苹果消费者,减少苹果生产者,增加橘子生产者生产苹果苹果>=12拒绝生产请求增加苹果消费者退出缓冲区NYNYN5.苹果消费者人工智能
此文档下载收益归作者所有