版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专用设备制造加工服务费协议样本版B版
- 11拧螺丝 说课稿-2023-2024学年科学二年级下册苏教版
- 揭秘文学之魅
- 6 观察与比较 说课稿-2024-2025学年科学一年级上册教科版
- 供应链优化管理与合作服务合同
- 二手房屋买卖补充协议范本
- 长期租赁车辆协议书
- 蔬菜配送合同模板
- 专属工作任务承揽协议一
- 互联网科技企业战略合作框架协议
- 实验报告抑菌结果分析
- 华为财务分析报告
- 快速出具旧机动车评估报告
- 客户服务活动方案
- 临床检验血液学配套试题及答案2-13及临床路径试题
- 人员保有培训课件
- 水上抛石安全专项施工方案
- 台大欧丽娟《红楼梦》公开课全部笔记
- 数据治理在物流行业的应用
- 班组长薪酬体系设计方案
- 持续改进管理程序
评论
0/150
提交评论