版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年出租车行业新闻发布机制构建
- 2026农业现代化技术应用与市场潜力研究报告
- 2025年AI审核模型的在线学习机制设计
- 2025新《安全生产月》主题活动竞赛必考题库(含答案)
- 2025年AI情绪调节设备行业合作伙伴协议条款
- 2025新中小学防溺水安全知识竞赛题库(含答案)
- 2026年环保材料委托加工保密协议书
- 2026届广东省清远市市级名校中考历史最后冲刺模拟试卷含解析
- 办公楼项目应急管理预案
- 双盲应急演练方案
- 2026年银行竞聘面试无领导小组讨论案例集含答案
- 北京市2025中国国家话剧院应届毕业生招聘11人笔试历年参考题库典型考点附带答案详解
- (二模)2026年深圳市高三年级第二次调研考试英语试卷(含答案)
- 2026上海市闵行区区管国企招聘42人备考题库附答案详解(夺分金卷)
- 2025-2026学年下学期八年级历史期中试卷(含答案)
- 2026年南京地铁招聘考试题库
- 2026年高等学校教师岗前培训暨教师资格笔通关试题库附参考答案详解(典型题)
- GA 1817.1-2026学校反恐怖防范要求第1部分:普通高等学校
- 2026智慧酒店解决方案
- 2026杭州市钱塘(新)区紧缺岗位人才招聘14人考试备考题库及答案解析
- 腰椎病中医护理推拿手法
评论
0/150
提交评论