用多进程同步方法演示“生产者-消费者”问题

用多进程同步方法演示“生产者-消费者”问题

ID:41344166

大小:541.72 KB

页数:13页

时间:2019-08-22

用多进程同步方法演示“生产者-消费者”问题_第1页
用多进程同步方法演示“生产者-消费者”问题_第2页
用多进程同步方法演示“生产者-消费者”问题_第3页
用多进程同步方法演示“生产者-消费者”问题_第4页
用多进程同步方法演示“生产者-消费者”问题_第5页
资源描述:

《用多进程同步方法演示“生产者-消费者”问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、**理工大学操作系统课程设计报告院(系):计算机工程学院专业:计算机科学与技术班级:计算111学生姓名:**学号:201107015  题目:用多进程同步方法演示“生产者-消费者”问题起迄日期:2014.07.07-2014.07.18设计地点:现代教育中心101-103、主教学楼B505  指导教师:王**2013—2014年度第2学期完成日期:2014年7月18日一、课程设计目的本次操作系统课程设计的主要任务是通过研究Linux的进程机制和信号量,实现生产者消费者问题的并发控制。实验中需要设置多个生产者和多个消费者,生产者和消费者对同一个缓冲区进行操作,互斥

2、的访问缓冲区。本次课程设计的目的就是加深对多进程如何正确访问临界资源的理解,同时掌握条件变量在互斥访问时应该如何正确有效地使用。掌握生产者消费者问题的解决流程和方法,能够在此基础上解决现实中的具体问题。二、课程设计内容课程设计内容:1)生产者和消费者进程的数目不固定,可在程序界面上设置2)生产者和消费者进程的数目在程序界面上可调,在运行时可随时单个增加与减少生产者与消费者3)生产者的生产速度与消费者的消费速度均可在程序界面调节,在运行中,该值调整后立即生效4)生产者生产的产品由随机函数决定5)多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码6)每个

3、生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前生产者与消费者的指针位置,以及生产者和消费者线程标识符7)采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓冲区的状态三、系统分析与设计1、系统分析1.1功能需求:生产者与消费者需要对缓冲池互斥操作,其中生产者和消费者的数目可以任意改变。生产者和消费者的速度也要随机的进行修改。可以查看当前生产者和消费者以及有界缓冲区的状态。1.2数据需求:本次试验生产者和消费者的数量要动态的增加、减少,还有缓冲区的产品数,以及生产、消费产品的指针。rear:生产者指针;front:消费

4、者指针;size:产品数;CONSUME_TIME:消费者速度;PRODUCE_TIME:生产者速度;mutex:对缓冲区互斥操作的锁;empty_cond:缓冲区空的条件变量;full_cond:缓冲区满的条件变量。设置生产速度删除消费者删除生产者缓冲池信息添加消费者主程序添加生产者设置消费速度2、系统设计:3、模块设计:函数调用关系:voidinit_list()voidon_changed()voidcreate_pthread_producer()voidcreate_pthread_consumer()voidremove_pthread_produc

5、er()voidremove_pthread_producer()voidconsumer_time()voidproduce_time()voidshow_pool_fun()main()void*producer()void*consumer()voidadd_to_list()生产者流程图:是否申请空缓冲区信号量size>=BUFFER_LENGTH缓冲区已满,线程阻塞rear=rear+1buffer[rear]=rand()%BUFFER_LENGTH;打印缓冲区状态size=size+1释放缓冲区开始结束消费者流程图:是否申请空缓冲区信号量size>

6、=BUFFER_LENGTH缓冲区已满,线程阻塞rear=rear+1buffer[rear]=rand()%BUFFER_LENGTH;打印缓冲区状态size=size+1释放缓冲区开始结束四、系统测试与调试分析1、系统测试(1)因为当生产者在缓冲区满了以后自动阻塞,所以生产者阻塞是否正常。测试说明测试名称用多进程同步方法演示“生产者-消费者”问题测试目的验证生产者阻塞测试技术单元测试测试方法黑盒测试法测试用例测试内容添加生产者,当生产者生产满缓冲区后,消费者阻塞。测试数据添加5个生产者预期结果缓冲区开始增加产品,产品数达到20后5个消费者阻塞测试结果与预期相

7、符(2)因为当生产者在缓冲区满了以后自动阻塞,需要消费者唤醒,所以需要测试唤醒的实现是否正常。测试说明测试名称用多进程同步方法演示“生产者-消费者”问题测试目的消费者唤醒生产者测试技术单元测试测试方法黑盒测试法测试用例测试内容消费者阻塞时,开始增加消费者,唤醒生产者测试数据添加5个生产者预期结果消费者消费缓冲区中的产品,从而唤醒生产者测试结果与预期相符(3)测试生产者和消费者的速度是否可以调节测试说明测试名称用多进程同步方法演示“生产者-消费者”问题测试目的调节生产者和消费者的速度测试技术单元测试测试方法黑盒测试法测试用例测试内容调节生产者和消费者速度测试数据默

8、认是1s,生产者速度2s

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。