《操作系統(tǒng)》課程設(shè)計說明書-用多線程同步方法解決生產(chǎn)者-消費者問題.doc_第1頁
《操作系統(tǒng)》課程設(shè)計說明書-用多線程同步方法解決生產(chǎn)者-消費者問題.doc_第2頁
《操作系統(tǒng)》課程設(shè)計說明書-用多線程同步方法解決生產(chǎn)者-消費者問題.doc_第3頁
《操作系統(tǒng)》課程設(shè)計說明書-用多線程同步方法解決生產(chǎn)者-消費者問題.doc_第4頁
《操作系統(tǒng)》課程設(shè)計說明書-用多線程同步方法解決生產(chǎn)者-消費者問題.doc_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

目錄目錄.1用多線程同步方法解決生產(chǎn)者消費者問題.31.設(shè)計題目與要求.31.1設(shè)計題目.31.2設(shè)計要求.32.設(shè)計思想及系統(tǒng)平臺.32.1設(shè)計思想.32.2系統(tǒng)平臺及使用語言.33.數(shù)據(jù)結(jié)構(gòu)與模塊說明.44.源程序清單.75.運行結(jié)果與運行情況.126.調(diào)試過程.錯誤!未定義書簽。7.總結(jié).16本科生課程設(shè)計成績評定表.18操作系統(tǒng)課程設(shè)計說明書2課程設(shè)計任務(wù)書學(xué)生姓名:專業(yè)班級:指導(dǎo)教師:工作單位:計算機科學(xué)與技術(shù)學(xué)院題目:用多線程同步方法解決生產(chǎn)者消費者問題(Producer-ConsumerProblem)初始條件:1操作系統(tǒng):Linux2程序設(shè)計語言:C語言3有界緩沖區(qū)內(nèi)設(shè)有20個存儲單元,其初值為0。放入取出的數(shù)據(jù)項按增序設(shè)定為120這20個整型數(shù)。要求完成的主要任務(wù):(包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)1技術(shù)要求:1)為每個生產(chǎn)者消費者產(chǎn)生一個線程,設(shè)計正確的同步算法2)每個生產(chǎn)者和消費者對有界緩沖區(qū)進行操作后,即時顯示有界緩沖區(qū)的當(dāng)前全部內(nèi)容、當(dāng)前指針位置和生產(chǎn)者消費者線程的自定義標(biāo)識符。3)生產(chǎn)者和消費者各有兩個以上。4)多個生產(chǎn)者或多個消費者之間須共享對緩沖區(qū)進行操作的函數(shù)代碼。2設(shè)計說明書內(nèi)容要求:1)設(shè)計題目與要求2)總的設(shè)計思想及系統(tǒng)平臺、語言、工具等。3)數(shù)據(jù)結(jié)構(gòu)與模塊說明(功能與流程圖)4)給出用戶名、源程序名、目標(biāo)程序名和源程序及其運行結(jié)果。(要注明存儲各個程序及其運行結(jié)果的主機IP地址和目錄。)5)運行結(jié)果與運行情況(提示:(1)有界緩沖區(qū)可用數(shù)組實現(xiàn)。(2)編譯命令可用:cc-lpthread-o目標(biāo)文件名源文件名(3)多線程編程方法參見附件。)3.調(diào)試報告:1)調(diào)試記錄2)自我評析和總結(jié)上機時間安排:18周一五08:012:00指導(dǎo)教師簽名:年月日系主任(或責(zé)任教師)簽名:年月日操作系統(tǒng)課程設(shè)計說明書3用多線程同步方法解決生產(chǎn)者消費者問題1.設(shè)計題目與要求1.1設(shè)計題目解決生產(chǎn)者消費者(Bounded-BufferProblem)問題1.2設(shè)計要求1)每個生產(chǎn)者和消費者對有界緩沖區(qū)進行操作后,即時顯示有界緩沖區(qū)的全部內(nèi)容、當(dāng)前指針位置和生產(chǎn)者消費者線程的標(biāo)識符。2)生產(chǎn)者和消費者各有兩個以上。3)多個生產(chǎn)者或多個消費者之間須共享對緩沖區(qū)進行操作的函數(shù)代碼。2.設(shè)計思想及系統(tǒng)平臺2.1設(shè)計思想生產(chǎn)者進程與消費者進程是經(jīng)典的同步互斥關(guān)系。系統(tǒng)創(chuàng)建兩類進程:proceducer()和consumer(),分別用來描述生產(chǎn)者和消費者的行為。生產(chǎn)者與消費者問題是指若干進程通過循環(huán)緩沖池區(qū)交換數(shù)據(jù)。生產(chǎn)者進程不斷向循環(huán)緩沖池區(qū)中寫入數(shù)據(jù)(即生產(chǎn)數(shù)據(jù)),而消費者進程不斷從循環(huán)緩沖池區(qū)中讀出數(shù)據(jù)(即消費數(shù)據(jù))。循環(huán)緩沖池共有N個緩沖區(qū),緩沖區(qū)可以暫存一個產(chǎn)品,任何時刻只能有一個進程可以對循環(huán)緩沖池進行操作。只要緩沖區(qū)未滿,生產(chǎn)者就可以把產(chǎn)品送入緩沖區(qū);只要緩沖區(qū)未空,消費者就可以從緩沖區(qū)中取走物品。為了解決生產(chǎn)者和消費者問題,應(yīng)該設(shè)置信號量和變量如下:full:滿緩沖區(qū)資源信號量,初值為0;empty:空緩沖區(qū)資源信號量,初值為n;in:生產(chǎn)者指針,初值均為0;out:消費者指針,均為0;mutex:緩沖區(qū)操作的互斥信號量,初值為1利用互斥信號量mutex實現(xiàn)諸進程對緩沖池的互斥使用,利用信號量empty和full分別表示緩沖池中空緩沖池和滿緩沖區(qū)的數(shù)量。操作系統(tǒng)課程設(shè)計說明書42.2系統(tǒng)平臺及使用語言1)操作系統(tǒng):Linux2)程序設(shè)計語言:C語言3)編譯器:GCC3.數(shù)據(jù)結(jié)構(gòu)與模塊說明3.1程序自定義函數(shù)1、voidproduce(structsem_info*);這個函數(shù)是生產(chǎn)者進行的生產(chǎn)過程,為所有的生產(chǎn)者所共享。結(jié)構(gòu)體指針用來接收生產(chǎn)者線程創(chuàng)建時傳來的生產(chǎn)者的個人信息。2、voidconsumer(structsem_info*);這個函數(shù)是消費者進行的生產(chǎn)過程,為所有的消費者所共享。結(jié)構(gòu)體指針用來接收消費者線程創(chuàng)建時傳來的消費者的個人信息。3、voidsetproduce(void);這個函數(shù)是用來設(shè)置生產(chǎn)者的個數(shù)和他們的名字。4、voidsetconsumer(void);這個函數(shù)是用來設(shè)置消費者的個數(shù)和他們的名字。5、voidactivepthread(int);這個函數(shù)是用來創(chuàng)建生產(chǎn)者線程,int型參數(shù)為生產(chǎn)者的個數(shù)。6、voidactivecthread(int);這個函數(shù)是用來創(chuàng)建生產(chǎn)者線程,int型參數(shù)為生產(chǎn)者的個數(shù)。7、intgettime(void);這個函數(shù)返回來一個整數(shù),作為線程的sleep()函數(shù)的參數(shù)。8、voidmyscanf(void);這個函數(shù)用來獲取設(shè)置生產(chǎn)者和消費者的個數(shù)時的整數(shù),確保這個數(shù)字在0到MAX_BUFFER之間。3.2系統(tǒng)函數(shù)調(diào)用線程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論