版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、山东科技大学学生课程设计课 程 设 计 说 明 书设计题目: 生产者消费者问题 山 东 科 技 大 学2014年 1 月 1 日课 程 设 计 任 务 书一、课程设计题目: 生产者消费者问题 二、课程设计主要参考资料(1) 美Abraham Silberschatz Peter Baer Galvin Greg Gagne 著.OPERATING SYSTEM CONCEPTSSeventh Edition.高等教育出版社,2007,01 (2) 蔡启先.C语言程序设计教程(第二版).重庆大学出版社,2003,07 (3) 张尧学等.计算机操作系统教程(第2版)M.北京:清华大学出版社,200
2、0. 三、课程设计应解决的主要问题:(1) 了解信号量的使用 (2) 理解生产者消费者问题模型 (3) 掌握真确使用同步机制的方法 (4) 实现生产者消费者进程的互斥与同步 四、课程设计相关附件(如:图纸、软件等): 程序源代码 五、任务发出日期: 2013-12-1 课程设计完成日期: 2014-1-1 指导教师签字: 指导教师对课程设计的评语成绩: 指导教师签字: 年 月 日一、设计目的1、了解信号量的使用2、加深对信号量机制的理解二、设计要求1、理解生产者与消费者问题模型,掌握解决问题的算法思想2、掌握正确使用同步机制的方法三、设计说明(含系统框图和(或)主要算法的流程图)生产者和消费者
3、是经典的进程同步问题,在这个问题中,生产者不断的向缓冲区中写入数据,而消费者则从缓冲区中读取数据。生产者进程和消费者对缓冲区的操作是互斥,即当前只能有一个进程对这个缓冲区进行操作,生产者进入操作缓冲区之前,先要看缓冲区是否已满,如果缓冲区已满,则它必须等待消费者进程将数据取出才能写入数据,同样的,消费者进程从缓冲区读取数据之前,也要判断缓冲区是否为空,如果为空,则必须等待生产者进程写入数据才能读取数据。模拟程序的程序流程图如下所示:1.主程序流程图:2. 生产者进程流程图3. 消费者进程流程图四、重要代码注释:/*生产者线程*/void *producer1(void* s) pthread_
4、mutex_lock(&the_main); pthread_mutex_unlock(&the_main); int proid=(int)s; int i; for(i=1; i<=MAX; i+) pthread_mutex_lock(&the_mutex); while(counter=BUFFER_SIZE) printf("%d号生产者 wait.n",proid); pthread_cond_wait(&condp,&the_mutex); printf("%d号生产者 唤醒.n",proid)
5、; bufferin=1; printf("%d号生产者生产1放入%d中n",proid,in); in=(in+1)%BUFFER_SIZE; counter+; pthread_cond_signal(&condc); pthread_mutex_unlock(&the_mutex); pthread_mutex_lock(&the_p); p+; printf("%d号生产者线程结束n",proid); pthread_mutex_unlock(&the_p); return 0;/*消费者线程*/void *con
6、sumer1(void* s) pthread_mutex_lock(&the_main); pthread_mutex_unlock(&the_main); int conid=(int)s; int j=1; int k=0; while(1) pthread_mutex_lock(&the_mutex); if(p=30&&counter=0) pthread_mutex_unlock(&the_mutex); break; while(counter=0) if(p=30&&counter=0) pthread_mutex
7、_unlock(&the_mutex); break; printf("%d号消费者wait.n",conid); pthread_cond_wait(&condc,&the_mutex); printf("%d号消费者唤醒.n",conid); if(bufferout=4) printf("%d号消费者在%d处消费%d counter=%d p=%dn",conid,out,bufferout,counter-1,p); bufferout=0; out=(out+1)%BUFFER_SIZE; count
8、er-; pthread_cond_signal(&condp); if(bufferout=1&&flgconid=0) flgconid=1; printf("%d号消费者在%d处消费%d counter=%d p=%dn",conid,out,bufferout,counter-1,p); for(j=1; j<=29; j=j+2) if(flgj=1) k+; if(k=15) k=0; for(j=1; j<=29; j+) flgj=0; bufferout=0; out=(out+1)%BUFFER_SIZE; count
9、er-; pthread_cond_signal(&condp); else k=0; else pthread_cond_signal(&condc); pthread_mutex_unlock(&the_mutex); printf("%d消费者线程结束n",conid);pthread_exit(0);/*如果生产者线程只有1,3,5,7,9依然存在,结束所有偶消费者线程*/for(j=1; j<=10; j=j+2) pthread_create(&proj,0,producer1,(void*)j); pthread_crea
10、te(&conj,0,consumer1,(void*)j); /*如果生产者线程只有2,4,6,8,10依然存在,结束所有奇数消费者线程*/for(j=2; j<=10; j=j+2) pthread_create(&conj,0,consumer2,(void*)j); pthread_create(&proj,0,producer2,(void*)j); /*如果生产者线程只在11-20之间依然存在,结束不在该范围内的其它编号的消费者线程*/for(j=11; j<=20; j=j+1) pthread_create(&proj,0,produ
11、cer3,(void*)j); for(j=11; j<=20; j=j+2) pthread_create(&conj,0,consumer3,(void*)j); for(j=12; j<=20; j=j+2) pthread_create(&conj,0,consumer4,(void*)j); /*其他编号生产者线程生产的产品可由任意的消费者线程消费*/ for(j=12; j<=20; j=j+2) pthread_create(&conj,0,consumer4,(void*)j); for(j=21; j<=30; j=j+1) pthread_create(&proj,0,producer4,(void*)j); for(j=21; j<=30; j=j+2) pthread_create(&conj,0,consumer5,(void*)j); for(j=22; j<=30; j=j+2) pthread_create(&conj,0,consumer6,(void*)j); 四、运行结果及分析五、总结1、本次实验是关于生产者与消费者之间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年西安外国语大学第二批专任教师岗位公开招聘34人的备考题库附答案详解
- 简约拟物青春成长手册模板
- 2025年深圳市建筑工务署面向社会公开招聘员额人员备考题库及1套参考答案详解
- 模具制造数字化车间建设中的智能化设备选型与配置研究教学研究课题报告
- 2025年南昌职业大学图书馆馆长岗位公开招聘备考题库附答案详解
- 2025年宁波市升力同创科技咨询服务有限公司招聘备考题库及一套参考答案详解
- 2025年新乡市中医院招聘备考题库及参考答案详解
- 深圳市龙华区平安建设中心2025年12月公开招聘专业聘用人员备考题库完整答案详解
- 富阎高新初级中学教师招聘(2026年应届毕业生)备考题库完整答案详解
- 2025年浙江舟山群岛新区六横文化旅游投资集团有限公司招聘备考题库完整参考答案详解
- 2025贵州省专业技术人员继续教育公需科目考试题库(2025公需课课程)
- 美国国家公园管理
- 人教版五年级语文上册期末考试卷【含答案】
- 四川省2025年高考综合改革适应性演练测试化学试题含答案
- 篮球原地投篮教学
- 医疗机构安全生产事故综合应急预案
- 水利信息化计算机监控系统单元工程质量验收评定表、检查记录
- 《管理学原理》课程期末考试复习题库(含答案)
- DL-T+5174-2020燃气-蒸汽联合循环电厂设计规范
- 消费者在直播带货中冲动行为的影响因素探究
- 人工智能中的因果驱动智慧树知到期末考试答案章节答案2024年湘潭大学
评论
0/150
提交评论