基于Linux的OS课程设计2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

OS课程设计生产者-消费者问题2013.12.192问题简要描述和设计要求•基于线程的生产者-消费者的合作问题–其中(生产者)从外设获取数据进行生产–另外(消费者)消费后进行输出,并存储输出结果。•在Linux环境下使用POSIX库进行设计实现•鼓励使用QT进行图形化显示•根据情况决定是否进行答辩•可以2人一组,但不能超过2人,在报告中必须要有明确分工3问题具体描述和设计要求完成N个生产者和M个消费者线程之间的并发控制,N、M不低于30,数据发送和接收缓冲区尺寸不小于20个(每个产品占据一个)。其中生产者线程1、3、5、7、9生产的产品供所有奇数编号的消费者线程消费,只有所有奇数编号的消费者线程都消费后,该产品才能从缓冲区中撤销。其中生产者线程2、4、6、8、10生产的产品所有偶数编号的消费者线程都可消费,任一偶数编号消费者线程消费该消息后,该产品都可从缓冲区中撤销。其中11-20号生产者线程生产的产品仅供对应编号的消费者线程消费。其他编号生产者线程生产的产品可由任意的消费者线程消费。每个生产线程生产30个消息后结束运行。如果一个消费者线程没有对应的生产者线程在运行后,也结束运行。所有生产者都停止生产后,如果消费者线程已经没有可供消费的产品,则也退出运行。4设计目的•掌握并能够灵活使用线程机制•掌握并能够灵活使用同步互斥机制•了解并能够较灵活地使用IO技术pthread_mutex_trylock线程间的同步还有这样一种情况:线程A需要等某个条件成立才能继续往下执行,现在这个条件不成立,线程A就阻塞等待,而线程B在执行过程中使这个条件成立了,就唤醒线程A继续执行。在pthread库中通过条件变量(ConditionVariable)来阻塞等待一个条件,或者唤醒等待这个条件的线程。6基本分析:forexample•基于线程的生产者-消费者的合作问题–其中(生产者)从外设获取数据进行生产–另外(消费者)消费后进行输出,并存储输出结果1:定义读入的(数据)的格式、定义(生产)的动作。2:定义定义(消费)的动作、输出的(数据)的格式。问题:需要定义几种???7更进一步的分析:forexample•基于线程的生产者-消费者的合作问题–其中一组线程(生产者)从外设获取数据进行生产–另外一组线程(消费者)消费后进行输出,并存储输出结果1:你设计的生产者和消费者是工作在本地还是远端?2:数据是从硬盘的文件上读取还是从键盘上获得?读取一个相同的文件是读一部分还是整体?(比如一个文件,包括三部分:用户ID、请求动作、正文)3:消费者对数据做何种处理(加密、解密或者计算等)?以何种方式实现?4:用户如何获得相关信息?。。。。。。。。。。。分析不同,设计也就不同分析不同,你的最终程序的实用价值也就不同8设计的要点使用哪一种IPC机制?如何工作?使用哪一种同步互斥机制?如何工作?文件有格式还是无格式?效率如何?如何进行测试?如何对保存测试信息?。。。。。。。。。。。设计不同,你的应用程序的健壮行、效率、可扩展性、用户方便性也就不同9设计报告格式设计目标背景知识说明原理相关函数说明设计设计环境(例如:面向何种用户、网络通信、内存大小等)概要设计----图详细设计和实现思路实现---图重要代码注释测试测试数据文件格式运行结果分析(是否满足上面的要求了?)总结参考源代码请同学们按流程进行工作准备、完成设计和报告

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功