《生產(chǎn)者消費者問題操作系統(tǒng)課程設(shè)計思路》由會員分享,可在線閱讀,更多相關(guān)《生產(chǎn)者消費者問題操作系統(tǒng)課程設(shè)計思路(18頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版文本樣式,第二級,第三級,第四級,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版文本樣式,第二級,第三級,第四級,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五
2、級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編
3、輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,目的及方法,技術(shù)路線,核心技術(shù),測試情況及分析,4,1,2,3,OS,課程設(shè)計,總結(jié)匯報,目錄一,工作總結(jié),存在問題,改進及討論,系統(tǒng)演示,8,5,6,7,目錄二,目的及方法,本課程設(shè)計通過模擬計算機操作系統(tǒng)中經(jīng)典的“生產(chǎn)者,消費者問題”,鞏固在操作系統(tǒng)原理課上所學(xué)的知識,加深對操作系統(tǒng)中進程同步和互斥、臨界區(qū)管理等問題認(rèn)識和理解,同時又了解了軟件設(shè)計的流程、方法以及思想,提高分析設(shè)計以及編程的能力。,技術(shù)路線,生產(chǎn)者,消費者,多生產(chǎn)者多消費者,同步,互斥,并發(fā),可視化,P,(),/V,(),多線程,Java Swing,和,awt,Th
4、read,Java,中的,wait(),和,notify(),管程實現(xiàn),核心技術(shù)(,1,),模擬P、V操作:,public class Semaphore,/,信號量(即,P V,操作的類),private int Value;/,信號量值,public Semaphore(int semValue),this.Value=semValue;,PS,:用,Java,中的,wait(),和,notify(),模擬操作系統(tǒng)的,P/V,操作,public synchronized void p(String s),/P,操作(即申請資源),Value-;,if(Value0)/,沒有可用資源,try
5、,System.out.print(+s+,進入阻塞隊列,n);,frame.a1.append(+s+,進入阻塞隊列,n);,this.wait();/,因資源不足而阻塞自己,/System.out.print(+this.toString()+is waittingn);/*,catch(InterruptedException e),類,Semaphore,的,定義,和重要方法,方法,模擬操作系統(tǒng)的,P,操作,public synchronized void v(String ss)/V,操作,Value+;,if(Value0)/,判斷有否發(fā)出,signal,操作的線程,next.v,
6、(s1+,釋放一個因發(fā)出,signal,操作而阻塞自己的線程,n);/,若有就釋放一個,/frame.a1.append(,釋放一個因發(fā)出,signal,操作而阻塞自己的線程,n);,else,mutex.v,(s1+,離開管程,n+,開放管程,);,/,否則開放管程,/frame.a1.append(,線程即將要離開管程,在離開之前開放管程,n);,/System.out.print(n,離開管程,n);,核心技術(shù)(,2,)續(xù),核心函數(shù),public void Wait(Semaphore x_sem,Count x_count,String s1),x_count.Cvalue+;/,等待
7、資源的線程數(shù)加,1,,初始值為,0,System.out.print(Waitn);,frame.a1.append(s1+,執(zhí)行,Wait,操作 因資源不可用而該線程 即將 阻塞自己!(緩沖區(qū)已滿或者已為空),n,在阻塞自己之前,先判斷是否有發(fā)出,signal,操作的線程。若有,則釋放之。否則準(zhǔn)備開放管程。之后便阻塞自己,n);,if(next_count0)/,判斷是否有發(fā)出,signal,操作的線程。因為發(fā)出此操作的線程會阻塞自己。,next.v(,釋放一個因發(fā)出,signal,操作,喚醒了其他線程而阻塞自己的線程 現(xiàn)在,n);/,若有就釋放一個,System.out.print(,釋放
8、一個發(fā)出,signal,操作的線程,n);,else,mutex.v(,沒有因發(fā)出,signal,操作而阻塞自己的線程,也沒有當(dāng)前線程的可用資源 在阻塞當(dāng)前線程之前先開放管程,讓其他線程有機會獲得管程,n);/,否則開放管程,System.out.print(,開放管程,n);,x_sem.p(s1+,線程因沒有可用資源(即緩沖區(qū))而,);/,等待資源的線程阻塞自己,,X_sem,初始化為,0,x_count.Cvalue-;/,等待資源的線程數(shù)減,1,核心技術(shù)(,2,)續(xù),核心函數(shù),public void Signal(Semaphore x_sem,Count x_count,String
9、 s2),frame.a1.append(s2+,執(zhí)行,Signal,操作 若當(dāng)前有等待資源的線程則喚醒該線程并阻塞自己。否則喚醒信號丟失,n );,if(x_count.Cvalue0),/,判斷是否有等待資源的線程,System.out.print(Signaln);,next_count+;/,發(fā)出,signal,操作的線程數(shù)加,1,x_sem.v,(“,資源可用,喚醒等待資源的線程!(緩沖 區(qū)不滿或者不空)現(xiàn)在,n);/,釋放一個等待資源的線程,next.p(s2+,線程因發(fā)出,Signal,操作阻塞自己,等待已喚醒的線程退出管程或其他 事件,n);/,發(fā)出,signal,操作的線程阻
10、塞自己,一旦阻塞,以下的,next_count-;,將不會執(zhí)行,等待被其他管程內(nèi)部事件的喚醒。,next_count-;,/,發(fā)出,signal,操作的線程數(shù)減,1,核心技術(shù)圖,示,示,入口,出口,等待進入管,程,程的隊列,生產(chǎn)者阻塞,隊,隊列,消費者阻塞,隊,隊列,enter,wait,signal,leave,資源可用,具體操作,發(fā)出,signal,而阻塞自己,的,的隊列,Y,N,開關(guān)管程,喚醒,喚醒,阻塞,阻塞,阻塞,測試情況及,分,分析,工作總結(jié),寒假期間:,小組成員共,同,同選定課題,項,項目,商討,開,開發(fā)語言,,確,確定基本的,技,技術(shù)路線,,由,由組長完成,程,程序框架及,基,
11、基本結(jié)構(gòu)和,類,類的設(shè)計。,2,月,20,日,2,月,27,:,完成了核心,程,程序并進行,基,基本測試,,編,編寫出各類,中,中的方法代,碼,碼。完成方,案,案幻燈片的,制,制作。,2,月,28,日,3,月,4,日:,完善核心程,序,序。完成用,戶,戶界面程序,的,的編寫。,3,月,6,日,3,月,7,日:,完成將各模,塊,塊函數(shù)的組,合,合,成功將,核,核心程序與,界,界面融合。,完,完成算法匯,報,報,PPT,3,月,8,日:,根據(jù)老師的,要,要求改用管,程,程實現(xiàn),完,善,善整體程序,。,。,3,月,9,日,現(xiàn)在:,完成總結(jié)匯,報,報,PPT,,進行進程,跟,跟蹤測試分,析,析。開始進
12、,行,行設(shè)計報告,和,和提優(yōu)論文,的,的撰寫。,存在的問題,系統(tǒng)上的不,足,足:,(,1,)對于進程,的,的追蹤和管,理,理尚不到位,(,2,),自身上的不,足,足:,(,1,)對軟件開,發(fā),發(fā)流程還不,熟,熟悉,(,2,)從理論到,實,實踐還有一,定,定程度的困,難,難,改進及討論,(,1,)因為應(yīng)用,Java,封裝好的方,法,法來阻塞和,喚,喚醒進程,,不,不知道其具,體,體實現(xiàn)的方,式,式和管理方,式,式,已經(jīng)自,定,定義了一個,PCB,類嘗試跟蹤,進,進程,取得,一,一定的效果,,,,但還未完,全,全實現(xiàn)對其,管,管理與控制,。,。,(,2,)在課程設(shè),計,計中發(fā)現(xiàn)了,自,自身的不足,
13、,,,經(jīng)過此鍛,煉,煉,我們逐,步,步熟悉了軟,件,件開發(fā)流程,,,,也初步學(xué),會,會如何把理,論,論知識轉(zhuǎn)為,實,實際應(yīng)用。,系統(tǒng)演示,開始界面:,可設(shè)置生產(chǎn),者,者數(shù)目,消,費,費者數(shù)目以,及,及緩沖區(qū)大,小,小,單擊確,定,定即可,系統(tǒng)演示,主界面:,可按需要調(diào),節(jié),節(jié)生產(chǎn)者和,消,消費者的速,度,度,如需統(tǒng),計,計請單擊分,析,析按鈕,系統(tǒng)演示,分析界面:,可以得到統(tǒng),計,計數(shù)據(jù)也可,從,從滾動面板,中,中看出各線,程,程的狀態(tài),9,、靜,夜,夜四,無,無鄰,,,,荒,居,居舊,業(yè),業(yè)貧,。,。1月-231月-23,Friday,January6,2023,10,、雨中,黃,黃葉樹,,
14、,,燈下,白,白頭人,。,。08:56:5308:56:5308:56,1/6/20238:56:53 AM,11,、以我獨沈,久,久,愧君相,見,見頻。1月-2308:56:5308:56,Jan-2306-Jan-23,12,、故人江,海,海別,幾,度,度隔山川,。,。08:56:5308:56:5308:56,Friday,January6,2023,13,、乍,見,見翻,疑,疑夢,,,,相,悲,悲各,問,問年,。,。1月-231月-2308:56:5308:56:53,January6,2023,14,、他鄉(xiāng)生白,發(fā),發(fā),舊國見,青,青山。06 一月20238:56:53 上午08:5
15、6:531月-23,15,、比,不,不了,得,得就,不,不比,,,,得,不,不到,的,的就,不,不要,。,。一月238:56,上,上,午,午1月-2308:56,January6,2023,16,、行動出,成,成果,工,作,作出財富,。,。2023/1/68:56:5308:56:53,06 January 2023,17,、做前,,,,能夠,環(huán),環(huán)視四,周,周;做,時,時,你,只,只能或,者,者最好,沿,沿著以,腳,腳為起,點,點的射,線,線向前,。,。8:56:53 上,午,午8:56 上,午,午08:56:531月-23,9,、沒有失敗,,,,只有暫時,停,停止成功!,。,。1月-231
16、月-23,Friday,January6,2023,10,、很,多,多事,情,情努,力,力了,未,未必,有,有結(jié),果,果,,但,但是,不,不努,力,力卻,什,什么,改,改變,也,也沒,有,有。,。,。08:56:5308:56:5308:56,1/6/20238:56:53AM,11,、成功就是,日,日復(fù)一日那,一,一點點小小,努,努力的積累,。,。1月-2308:56:5308:56,Jan-2306-Jan-23,12,、世,間,間成,事,事,,不,不求,其,其絕,對,對圓,滿,滿,,留,留一,份,份不,足,足,,可,可得,無,無限,完,完美,。,。08:56:5308:56:5308:56,Friday,January6,2023,13,、不知香,積,積寺,數(shù),里,里入云峰,。,。1月-231月-2308:56:5308:56:53,January6,2023,14,、意志堅強,的,的人能把世,界,界放在手中,像,像泥塊一樣,任,任意揉捏。06 一月20238:56:53 上午08:56:531月-23,15,、楚塞三,湘,湘接,荊,門,門九派通,。,。一月 238:56,上,上