- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
**理工大学
操作系统课程设计报告
院(系): 计算机工程学院
专业: 计算机科学与技术 班级: 计算111
学生姓名: ** 学号: 201107015
题目:用多进程同步方法演示“生产者-消费者”问题
起迄日期: 2014.07.07-2014.07.18
设计地点: 现代教育中心101-103、主教学楼B505
指 导 教 师: 王**
2013—2014年度 第 2 学期
完成日期: 2014 年 7 月 18 日
课程设计目的
本次操作系统课程设计的主要任务是通过研究Linux的进程机制和信号量,实现生产者消费者问题的并发控制。实验中需要设置多个生产者和多个消费者,生产者和消费者对同一个缓冲区进行操作,互斥的访问缓冲区。本次课程设计的目的就是加深对多进程如何正确访问临界资源的理解,同时掌握条件变量在互斥访问时应该如何正确有效地使用。掌握生产者消费者问题的解决流程和方法,能够在此基础上解决现实中的具体问题。
课程设计内容
课程设计内容:
生产者和消费者进程的数目不固定,可在程序界面上设置
生产者和消费者进程的数目在程序界面上可调,在运行时可随时单个增加与减少生产者与消费者
生产者的生产速度与消费者的消费速度均可在程序界面调节,在运行中,该值调整后立即生效
生产者生产的产品由随机函数决定
多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码
每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前生产者与消费者的指针位置,以及生产者和消费者线程标识符
采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓冲区的状态
系统分析与设计
1、系统分析
1.1功能需求:生产者与消费者需要对缓冲池互斥操作,其中生产者和消费者的数目可以任意改变。生产者和消费者的速度也要随机的进行修改。可以查看当前生产者和消费者以及有界缓冲区的状态。
1.2数据需求:本次试验生产者和消费者的数量要动态的增加、减少,还有缓冲区的产品数,以及生产、??费产品的指针。
rear:生产者指针;
front:消费者指针;
size:产品数;
CONSUME_TIME:消费者速度;
PRODUCE_TIME :生产者速度;
mutex:对缓冲区互斥操作的锁;
empty_cond:缓冲区空的条件变量;
full_cond:缓冲区满的条件变量。
设置生产速度
删除消费者
删除生产者
缓冲池信息
添加消费者
主程序
添加生产者
设置消费速度
2、系统设计:
3、模块设计:
函数调用关系:
void init_list()
void on_changed()
void create_pthread_
producer()
void create_pthread_
consumer()
void remove_pthread_
producer()
void remove_pthread_
producer()
void consumer_time()
void produce_time()
void show_pool_fun()
main()
void *producer()
void *consumer()
void add_to_list()
生产者流程图:
是
否
申请空缓冲区
信号量size=BUFFER_LENGTH
缓冲区已满,线程阻塞
rear = rear+1
buffer[rear] = rand()%BUFFER_LENGTH;
打印缓冲区状态
size = size+1
释放缓冲区
开始
结束
消费者流程图:是
否
申请空缓冲区
信号量size=BUFFER_LENGTH
缓冲区已满,线程阻塞
rear = rear+1
buffer[rear] = rand()%BUFFER_LENGTH;
打印缓冲区状态
size = size+1
释放缓冲区
开始
结束
四、系统测试与调试分析
1、系统测试
(1)因为当生产者在缓冲区满了以后自动阻塞,所以生产者阻塞是否正常。
测试说明测试名称用多进程同步方法演示“生产者-消费者”问题测试目的验证生产者阻塞测试技术单元测试测试方法黑盒测试法测试用例测试内容添加生产者,当生产者生产满缓冲区后,消费者阻塞。测试数据添加5个生产者预期结果缓冲区开始增加产品,产品数达到20后5
文档评论(0)