生產(chǎn)者消費(fèi)者問(wèn)題操作系統(tǒng)課程設(shè)計(jì)思路ppt課件_第1頁(yè)
生產(chǎn)者消費(fèi)者問(wèn)題操作系統(tǒng)課程設(shè)計(jì)思路ppt課件_第2頁(yè)
生產(chǎn)者消費(fèi)者問(wèn)題操作系統(tǒng)課程設(shè)計(jì)思路ppt課件_第3頁(yè)
生產(chǎn)者消費(fèi)者問(wèn)題操作系統(tǒng)課程設(shè)計(jì)思路ppt課件_第4頁(yè)
生產(chǎn)者消費(fèi)者問(wèn)題操作系統(tǒng)課程設(shè)計(jì)思路ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目的及方法目的及方法 技術(shù)道路技術(shù)道路 中心技術(shù)中心技術(shù) 測(cè)試情況及分析測(cè)試情況及分析 4123OS課程設(shè)計(jì)課程設(shè)計(jì)總結(jié)匯報(bào)總結(jié)匯報(bào)目錄一目錄一任務(wù)總結(jié)任務(wù)總結(jié) 存在問(wèn)題存在問(wèn)題改良及討論改良及討論 系統(tǒng)演示系統(tǒng)演示 8567目錄二目錄二目的及方法 本課程設(shè)計(jì)經(jīng)過(guò)模擬計(jì)算機(jī)操作系統(tǒng)中經(jīng)典的“消費(fèi)者消費(fèi)者問(wèn)題,穩(wěn)定在操作系統(tǒng)原理課上所學(xué)的知識(shí),加深對(duì)操作系統(tǒng)中進(jìn)程同步和互斥、臨界區(qū)管理等問(wèn)題認(rèn)識(shí)和了解,同時(shí)又了解了軟件設(shè)計(jì)的流程、方法以及思想,提高分析設(shè)計(jì)以及編程的才干。技術(shù)道路技術(shù)道路消費(fèi)者消費(fèi)者消費(fèi)者消費(fèi)者多消費(fèi)者多消費(fèi)者多消費(fèi)者多消費(fèi)者同步同步互斥互斥并發(fā)并發(fā)可視化可視化P/ V多線程多線

2、程Java Swing和和awtThreadJava中的中的wait()和和notify()管程實(shí)現(xiàn)管程實(shí)現(xiàn)中心技術(shù)1public class Semaphore /信號(hào)量即P V操作的類private int Value;/信號(hào)量值public Semaphore(int semValue)this.Value=semValue;PS:用:用Java中的中的wait()和和notify()模擬模擬操作系統(tǒng)的操作系統(tǒng)的P/V操作操作public synchronized void p(String s) /P操作即懇求資源操作即懇求資源Value-;if(Value0)/沒(méi)有可用資源沒(méi)有可用資

3、源trySystem.out.print(+s+進(jìn)入阻塞隊(duì)列進(jìn)入阻塞隊(duì)列n);frame.a1.append(+s+進(jìn)入阻塞隊(duì)列進(jìn)入阻塞隊(duì)列n);this.wait(); /因資源缺乏而阻塞本人因資源缺乏而阻塞本人/System.out.print(+this.toString()+is waittingn);/*catch(InterruptedException e)類類Semaphore的定義和重要方法方法的定義和重要方法方法模擬操作系統(tǒng)的模擬操作系統(tǒng)的P操作操作public synchronized void v(String ss)/V操作操作Value+;if(Value0)/判別

4、有否發(fā)出signal操作的線程 next.v(s1+釋放一個(gè)因發(fā)出signal操作而阻塞本人的線程n);/假設(shè)有就釋放一個(gè)/frame.a1.append(釋放一個(gè)因發(fā)出signal操作而阻塞本人的線程n);else mutex.v(s1+分開(kāi)管程n+開(kāi)放管程); /否那么開(kāi)放管程 /frame.a1.append(線程即將要分開(kāi)管程,在分開(kāi)之前開(kāi)放管程n); /System.out.print(n分開(kāi)管程n);中心技術(shù)2續(xù)中心函數(shù)public void Wait(Semaphore x_sem,Count x_count,String s1)x_count.Cvalue+;/等待資源的線程數(shù)

5、加等待資源的線程數(shù)加1,初始值為,初始值為0System.out.print(Waitn);frame.a1.append(s1+執(zhí)行執(zhí)行Wait操作操作 因資源不可用而該線程因資源不可用而該線程 即將即將 阻塞本人!阻塞本人!緩沖區(qū)已滿或者已為空緩沖區(qū)已滿或者已為空n在阻塞本人之前,先判別能否有發(fā)出在阻塞本人之前,先判別能否有發(fā)出signal操作的線程。假操作的線程。假設(shè)有,那么釋放之。否那么預(yù)備開(kāi)放管程。之后便阻塞本人設(shè)有,那么釋放之。否那么預(yù)備開(kāi)放管程。之后便阻塞本人 n );if(next_count0)/判別能否有發(fā)出判別能否有發(fā)出signal操作的線程。由于發(fā)出此操作的線程會(huì)阻塞本

6、人。操作的線程。由于發(fā)出此操作的線程會(huì)阻塞本人。next.v(釋放一個(gè)因發(fā)出釋放一個(gè)因發(fā)出signal操作,喚醒了其他線程而阻塞本人的線程操作,喚醒了其他線程而阻塞本人的線程 如今如今n);/假假設(shè)有就釋放一個(gè)設(shè)有就釋放一個(gè)System.out.print(釋放一個(gè)發(fā)出釋放一個(gè)發(fā)出signal操作的線程操作的線程n);elsemutex.v(沒(méi)有因發(fā)出沒(méi)有因發(fā)出signal操作而阻塞本人的線程,也沒(méi)有當(dāng)前線程的可用資源操作而阻塞本人的線程,也沒(méi)有當(dāng)前線程的可用資源 在阻在阻塞當(dāng)前線程之前先開(kāi)放管程,讓其他線程有時(shí)機(jī)獲得管程塞當(dāng)前線程之前先開(kāi)放管程,讓其他線程有時(shí)機(jī)獲得管程n);/否那么開(kāi)放管程

7、否那么開(kāi)放管程System.out.print(開(kāi)放管程開(kāi)放管程n);x_sem.p(s1+線程因沒(méi)有可用資源即緩沖區(qū)而線程因沒(méi)有可用資源即緩沖區(qū)而);/等待資源的線程阻塞本人,等待資源的線程阻塞本人,X_sem初始化為初始化為0 x_count.Cvalue-;/等待資源的線程數(shù)減等待資源的線程數(shù)減1中心技術(shù)2續(xù)中心函數(shù)public void Signal(Semaphore x_sem,Count x_count,String s2) frame.a1.append(s2+執(zhí)行Signal操作 假設(shè)當(dāng)前有等待資源的線程那么喚醒該線程并阻塞本人。否那么喚醒信號(hào)喪失n ); if(x_coun

8、t.Cvalue0)/判別能否有等待資源的線程 System.out.print(Signaln); next_count+;/發(fā)出signal操作的線程數(shù)加1 x_sem.v(“ 資源可用,喚醒等待資源的線程! 緩沖 區(qū)不滿或者不空 如今n);/釋放一個(gè)等待資源的線程next.p(s2+線程因發(fā)出Signal操作阻塞本人,等待已喚醒的線程退出管程或其他 事件 n);/發(fā)出signal操作的線程阻塞本人,一旦阻塞,以下的next_count-;將不會(huì)執(zhí)行,等待被其他管程內(nèi)部事件的喚醒。 next_count-;/發(fā)出signal操作的線程數(shù)減1 中心技術(shù)圖示入口出口等待進(jìn)入管程的隊(duì)列消費(fèi)者阻塞

9、隊(duì)列消費(fèi)者阻塞隊(duì)列enterwaitsignalleave資源可用詳細(xì)操作發(fā)出signal而阻塞本人的隊(duì)列YN開(kāi)關(guān)管程喚醒喚醒阻塞阻塞阻塞測(cè)試情況及分析 任務(wù)總結(jié)任務(wù)總結(jié)寒假期間:小組成員共同選定課題工程,商討開(kāi)發(fā)言語(yǔ),確定根本的技術(shù)道路,由組長(zhǎng)完成程序框架及根本構(gòu)造和類的設(shè)計(jì)。2月20日2月27:完成了中心程序并進(jìn)展根本測(cè)試,編寫出各類中的方法代碼。完成方案幻燈片的制造。2月28日3月4日:完善中心程序。完成用戶界面程序的編寫。3月6日3月7日:完成將各模塊函數(shù)的組合,勝利將中心程序與界面交融。完成算法匯報(bào)PPT3月8日:根據(jù)教師的要求改用管程實(shí)現(xiàn),完善整體程序。3月9日如今:完成總結(jié)匯報(bào)P

10、PT,進(jìn)展進(jìn)程跟蹤測(cè)試分析。開(kāi)場(chǎng)進(jìn)展設(shè)計(jì)報(bào)告和提優(yōu)論文的撰寫。存在的問(wèn)題存在的問(wèn)題1 1對(duì)于進(jìn)程的追蹤和管理尚不到位對(duì)于進(jìn)程的追蹤和管理尚不到位2 21 1對(duì)軟件開(kāi)發(fā)流程還不熟習(xí)對(duì)軟件開(kāi)發(fā)流程還不熟習(xí)2 2從實(shí)際到實(shí)際還有一定程度的困難從實(shí)際到實(shí)際還有一定程度的困難改良及討論改良及討論1 1由于運(yùn)用由于運(yùn)用JavaJava封裝好的方法來(lái)阻塞和喚醒進(jìn)程,不知封裝好的方法來(lái)阻塞和喚醒進(jìn)程,不知道其詳細(xì)實(shí)現(xiàn)的方式和管理方式,曾經(jīng)自定義了一個(gè)道其詳細(xì)實(shí)現(xiàn)的方式和管理方式,曾經(jīng)自定義了一個(gè)PCBPCB類類嘗試跟蹤進(jìn)程,獲得一定的效果,但還未完全實(shí)現(xiàn)對(duì)其管嘗試跟蹤進(jìn)程,獲得一定的效果,但還未完全實(shí)現(xiàn)對(duì)其管理與控制。理與控制。2 2在課程設(shè)計(jì)中發(fā)現(xiàn)了本身的缺乏,經(jīng)過(guò)此鍛煉,我們?cè)谡n程設(shè)計(jì)中發(fā)現(xiàn)了本身的缺乏,經(jīng)過(guò)此鍛煉,我們逐漸熟習(xí)了軟件開(kāi)發(fā)流程,也初步學(xué)會(huì)如何把實(shí)際知識(shí)轉(zhuǎn)逐漸熟習(xí)了軟件開(kāi)發(fā)流程,也初步學(xué)會(huì)如何把實(shí)際知識(shí)轉(zhuǎn)為實(shí)踐運(yùn)用。為實(shí)踐運(yùn)用。系統(tǒng)演示系統(tǒng)演示開(kāi)場(chǎng)界面:開(kāi)場(chǎng)界面:可

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論