版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、山東科技大學學生課程設計課 程 設 計 說 明 書設計題目: 生產者消費者問題 山 東 科 技 大 學2014年 1 月 1 日課 程 設 計 任 務 書一、課程設計題目: 生產者消費者問題 二、課程設計主要參考資料(1) 美Abraham Silberschatz Peter Baer Galvin Greg Gagne 著.OPERATING SYSTEM CONCEPTSSeventh Edition.高等教育出版社,2007,01 (2) 蔡啟先.C語言程序設計教程(第二版).重慶大學出版社,2003,07 (3) 張堯學等.計算機操作系統(tǒng)教程(第2版)M.北京:清華大學出版社,200
2、0. 三、課程設計應解決的主要問題:(1) 了解信號量的使用 (2) 理解生產者消費者問題模型 (3) 掌握真確使用同步機制的方法 (4) 實現(xiàn)生產者消費者進程的互斥與同步 四、課程設計相關附件(如:圖紙、軟件等): 程序源代碼 五、任務發(fā)出日期: 2013-12-1 課程設計完成日期: 2014-1-1 指導教師簽字: 指導教師對課程設計的評語成績: 指導教師簽字: 年 月 日一、設計目的1、了解信號量的使用2、加深對信號量機制的理解二、設計要求1、理解生產者與消費者問題模型,掌握解決問題的算法思想2、掌握正確使用同步機制的方法三、設計說明(含系統(tǒng)框圖和(或)主要算法的流程圖)生產者和消費者
3、是經典的進程同步問題,在這個問題中,生產者不斷的向緩沖區(qū)中寫入數(shù)據,而消費者則從緩沖區(qū)中讀取數(shù)據。生產者進程和消費者對緩沖區(qū)的操作是互斥,即當前只能有一個進程對這個緩沖區(qū)進行操作,生產者進入操作緩沖區(qū)之前,先要看緩沖區(qū)是否已滿,如果緩沖區(qū)已滿,則它必須等待消費者進程將數(shù)據取出才能寫入數(shù)據,同樣的,消費者進程從緩沖區(qū)讀取數(shù)據之前,也要判斷緩沖區(qū)是否為空,如果為空,則必須等待生產者進程寫入數(shù)據才能讀取數(shù)據。模擬程序的程序流程圖如下所示: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依然存在,結束所有奇數(shù)消費者線程*/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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024夏珠離婚協(xié)議書正本包含婚后共同投資分割協(xié)議3篇
- 2024年項目轉讓居間協(xié)議標準格式版
- 2024年版房產交易資金安全保管合同版
- 2024年車輛維修保養(yǎng)合同書
- 2024年金融中心三方物業(yè)服務委托合同模板3篇
- 2024年招商引資合同:環(huán)保產業(yè)合作框架協(xié)議3篇
- 移動基站場地租賃合同
- 施工勞務合同
- 出口代理協(xié)議范本3篇
- 建筑工程合同書模板封面2篇
- 公司報價管理辦法
- 試論在地理教學設計中的應用
- 小學勞動教育培訓心得體會
- 《眼科常見疾病護理》
- 2023部編人教版八年級上冊道德與法治知識點提綱
- 乙肝五項操作規(guī)程(膠體金法)
- 15《石獅》(說課稿)- 2022-2023學年美術五年級上冊 嶺南版
- 醫(yī)學課件-新生兒腹瀉護理查房教學課件
- ROV的結構設計及關鍵技術研究的任務書
- 2022滬教版小學數(shù)學二年級上冊期末試卷含部分答案(三套)
- 湖南省長沙市雅禮教育集團2022-2023學年七年級上學期期末英語試卷
評論
0/150
提交評論