




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
操作系統(tǒng)課程設(shè)計(jì)( )一號黑體加粗用多進(jìn)程同步方法解決生產(chǎn)者-消費(fèi)者問題(小二黑體加粗)院系:班級:學(xué)號:姓名:同組者:時(shí)間:目錄(小二黑體加粗)TOC\o"1-5"\h\z一、 題目: 3\o"CurrentDocument"二、 設(shè)計(jì)目的: 3\o"CurrentDocument"三、 總體設(shè)計(jì)思想概述: 3四、 說明: 3\o"CurrentDocument"五、 設(shè)計(jì)要求: 3\o"CurrentDocument"六、 設(shè)計(jì)方案: 3\o"CurrentDocument"七、 流程圖: 4\o"CurrentDocument"八、 運(yùn)行結(jié)果 5\o"CurrentDocument"九、 源程序 6十、總結(jié) 8十-一、參考文獻(xiàn) 9一、 題目:(標(biāo)題2,即三號黑體加粗)用多進(jìn)程同步方法解決生產(chǎn)者-消費(fèi)者問題。二、 設(shè)計(jì)目的:通過研究Linux的進(jìn)程機(jī)制和信號量實(shí)現(xiàn)生產(chǎn)者消費(fèi)者問題的并發(fā)控制。三、 總體設(shè)計(jì)思想概述:1、生產(chǎn)者一消費(fèi)者問題是一種同步問題的抽象描述。1、生產(chǎn)者一消費(fèi)者問題是一種同步問題的抽象描述。2、3、而當(dāng)某個(gè)進(jìn)程釋放資源時(shí),則它就相當(dāng)一個(gè)生產(chǎn)者。2、3、而當(dāng)某個(gè)進(jìn)程釋放資源時(shí),則它就相當(dāng)一個(gè)生產(chǎn)者。計(jì)算機(jī)系統(tǒng)中的每個(gè)進(jìn)程都可以消費(fèi)或生產(chǎn)某類資源。當(dāng)系統(tǒng)中某一進(jìn)程使用某一資源時(shí),可以看作是消耗,且該進(jìn)程稱為消費(fèi)者。、說明:有界緩沖區(qū)內(nèi)設(shè)有20個(gè)存儲單元,放入/取出的數(shù)據(jù)項(xiàng)設(shè)定為1-20這20個(gè)整型數(shù)。五、 設(shè)計(jì)要求:1、 每個(gè)生產(chǎn)者和消費(fèi)者對有界緩沖區(qū)進(jìn)行操作后,即時(shí)顯示有界緩沖區(qū)的全部內(nèi)容,當(dāng)前指針位置和生產(chǎn)者/消費(fèi)者進(jìn)程的標(biāo)識符。2、 生產(chǎn)者和消費(fèi)者各有兩個(gè)以上。3、 多個(gè)生產(chǎn)者或多個(gè)消費(fèi)者之間須有共享對緩沖區(qū)進(jìn)行操作的函數(shù)代碼。六、 設(shè)計(jì)方案:1、 用Java編寫程序,運(yùn)行環(huán)境為Eclipse。2、 抽象化生產(chǎn)者與消費(fèi)者之間的關(guān)系,即用線程來產(chǎn)生數(shù)據(jù)或者使用數(shù)據(jù),定義的類有:、publicclassBufferLock、classProducer(3)、classConsumer3、 然后繼承Thread(線程)來實(shí)現(xiàn)多個(gè)生產(chǎn)者與多個(gè)消費(fèi)者之間的關(guān)系:、classProducerextendsThread、classConsumerextendsThread4、 還需要有一個(gè)緩沖區(qū)來存放數(shù)據(jù),即通過緩沖區(qū)把生產(chǎn)者和消費(fèi)者聯(lián)系起來。5、 synchronized關(guān)鍵字修飾方法,實(shí)現(xiàn)線程同步。七、流程圖:
八、運(yùn)行結(jié)果1、截圖一:[rhread-0Producerput:1Thread-2Producerput:1Thread-1Consumerget:1Thread-3Consumerget:1Thread-2Producerput:2Thread-3Consumerget:2Thread-?Producerput:2Thread-1Consumerget:2Thread-?Producerput:3Thread-?Producerput:4Thread-3Consumerget:3Thread-2Producerput:3Thread-?Producerput:5Thread-3Consumerget:4Thread-3Consumerget:5Thread-3Consumerget:6Thread-1Consumerget:3Thread-2Producerput:4Thread-?Producerput:6Thread-3Consumerget:5Thread-2Producerput:5Thread-1Consumerget:4Thread-2Producerput:6Thread-3Consumerget:7Thread-?Producerput:7Thread-3Consumerget:7Thread-2Producerput:7Thread-1Consumerget:6Thread-2Producerput:SThread-3Consumerget:&Thread-?Producerput:BThread-3Consumerget:9Thread-2Producerput:9Thread-1Consumerget:8Thread-2Producerput:102、截圖二:
Thread-3Consumerget:9Thread-?Producerput:9Thread-3Consumerget:11Thread-2Producerput:11Thread-1Consumerget:10Thread-2Producerput:12Thread-3Consumerget:10Thread-?Producerput:10Thread-3Consumerget:13Thread-2Producerput:13Thread-1Consumerget:12Thread-2Producerput:14Thread-2Producerput:15Thread-3Consumerget:11Thread-3Consumerget:15Thread-2Producerput:16Thread-3Consumerget:16Thread-2Producerput:17Thread-2Producerput:18Thread-?Producerput:11Thread-3Consumerget:17Thread-1Consumerget:14Thread-3Consumerget:18Thread-?Producerput:12Thread-1Consumerget:12Thread-1Consumerget:13Thread-2Producerput:19Thread-2Producerput:20Thread-?Producerput:13Thread-1Consumerget:19Thread-1Consumerget:20Thread-?Producerput:14Thread-1Consumerget:14Thread-?Producerput:15Thread-1Consumerget:153、截圖三:Thread-?Producerput:16Thread-1Consumerget:16Thread-?Producerput:17Thread-1Consumerget:17Thread-?Producerput:ISThread-1Consumerget:IBThread-?Producerput:19Thread-1Consumerget:19Thread-?Producerput:2?Thread-1Consumerget:20〃加互斥鎖的緩沖區(qū)九、源程序〃加互斥鎖的緩沖區(qū)publicclassBufferLock(
〃共享變量//value是否為空的信號量privateintvalue;〃共享變量//value是否為空的信號量privatebooleanisEmpty=true;publicsynchronizedvoidput(inti) //同步方法(while(!isEmpty) 〃當(dāng)value不空時(shí),等待try(this.wait(); 〃使調(diào)用該方法的當(dāng)前線程等待,即阻塞自己}catch(InterruptedExceptione)(}value=i; 〃當(dāng)value空時(shí),value獲得值isEmpty=false; //設(shè)置value為不空狀態(tài)notifyAll(); 〃喚醒其他所有等待線程}publicsynchronizedintget() //同步方法(while(isEmpty) 〃當(dāng)value空時(shí),等待try(this.wait();}catch(InterruptedExceptione)(}//設(shè)置value為空狀態(tài),并返回值〃喚醒其他所有等待線程////設(shè)置value為空狀態(tài),并返回值〃喚醒其他所有等待線程//生產(chǎn)者returnvalue;}classProducerextendsThread(privateBufferLockbuffer;publicProducer(BufferLockbuffer)(this.buffer=buffer;}publicvoidrun()(
for(inti=1;i<=20;i++) //生產(chǎn)者往緩沖區(qū)中寫入數(shù)1~20(buffer.put(i);Systemout.println(Thread.currentThread().getName()+Producerput:"+i);}}}〃消費(fèi)者classConsumerextendsThread(〃消費(fèi)者privateBufferLockbuffer;publicConsumer(BufferLockbuffer)(this.buffer=buffer;}publicvoidrun()(for(inti=1;i<=20;i++) 〃消費(fèi)者從緩沖區(qū)中取數(shù)System.out.println("\t\t\t"+Thread.currentThread().getName()+"Consumerget:"+buffer.get());}publicstaticvoidmain(Stringargs[])(BufferLockbuffer=newBufferLock();newProducer(buffer)).start(); 〃構(gòu)造兩個(gè)生產(chǎn)者線程和兩個(gè)消費(fèi)者線程newConsumer(buffer)).start();newProducer(buffer)).start();newConsumer(buffer)).start();}}十、總結(jié)十、總結(jié)這次生產(chǎn)者與消費(fèi)者之間的關(guān)系的實(shí)驗(yàn)我用Java語言編寫的,用關(guān)鍵字synchronized來實(shí)現(xiàn)多個(gè)線程同步,用繼承Thread來將生產(chǎn)者線程與消費(fèi)者線程實(shí)例化。其實(shí),在做這個(gè)實(shí)驗(yàn)之前我的Java語言編程老師講
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子商務(wù)物流服務(wù)合同協(xié)議書
- 全新贖樓合同
- 林業(yè)碳匯項(xiàng)目開發(fā)合作合同
- 關(guān)于合同簽訂的往來文書范例集
- 購銷合同書集合
- 《稅率》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年六年級下冊數(shù)學(xué)人教版
- 四川大學(xué)《城市設(shè)計(jì)Ⅰ》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南農(nóng)業(yè)大學(xué)《電子商務(wù)網(wǎng)絡(luò)安全》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西培賢國際職業(yè)學(xué)院《試驗(yàn)設(shè)計(jì)與分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南涉外經(jīng)濟(jì)學(xué)院《畢業(yè)設(shè)計(jì)展示》2023-2024學(xué)年第二學(xué)期期末試卷
- 三方公司合作協(xié)議書范本
- 護(hù)理責(zé)任組長續(xù)聘競聘
- 2024-2025學(xué)年第二學(xué)期教學(xué)教研工作安排表
- 2025年貴州云上產(chǎn)業(yè)服務(wù)有限公司招聘筆試參考題庫含答案解析
- 2025-2030年中國天然氣行業(yè)發(fā)展分析及發(fā)展趨勢預(yù)測報(bào)告
- 《雷達(dá)信號處理基礎(chǔ)》課件
- 外研版(三起)小學(xué)英語三年級下冊Unit 1 Animal friends Get ready start up 課件
- (新版)廣電全媒體運(yùn)營師資格認(rèn)證考試復(fù)習(xí)題庫(含答案)
- 《公路建設(shè)項(xiàng)目文件管理規(guī)程》
- 春節(jié)文化研究手冊
- 簡單娛樂yy頻道設(shè)計(jì)模板
評論
0/150
提交評論