版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 操作系統(tǒng)課程設(shè)計(jì)報(bào)告</p><p> 院(系): 計(jì)算機(jī)工程學(xué)院 </p><p> 專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè) </p><p> 學(xué)生姓名: __ </p><p> 班級(jí):__ 學(xué)號(hào):
2、 </p><p> 題目: 用多進(jìn)程同步方法演示“桔子-蘋果”問題____ </p><p> 起迄日期: _2012.07.02_--2012.07.13_ ____</p><p> 設(shè)計(jì)地點(diǎn): 現(xiàn)代教育中心 </p><p> 指 導(dǎo) 教 師: 熊曉蕓
3、 </p><p> 2011—2012年度 第 2 學(xué)期</p><p> 完成日期: 2012 年 7 月 13 日</p><p><b> 課程設(shè)計(jì)目的</b></p><p> 本次實(shí)驗(yàn)進(jìn)行操作系統(tǒng)課程設(shè)計(jì)的主要任務(wù)是模擬生產(chǎn)者和消費(fèi)者的一個(gè)衍生,即實(shí)現(xiàn)“橘子-蘋果問
4、題”。這個(gè)問題中有兩個(gè)生產(chǎn)者,分別生產(chǎn)蘋果核橘子,有兩個(gè)消費(fèi)者,分別消費(fèi)橘子和蘋果。同時(shí),因?yàn)閮蓚€(gè)生產(chǎn)者和兩個(gè)消費(fèi)者對(duì)同一個(gè)緩沖區(qū)進(jìn)行操作,所以應(yīng)互斥的訪問緩沖區(qū)以保證程序的正確性。本次實(shí)驗(yàn)的目的就是加深各個(gè)進(jìn)程正確有效的對(duì)資源的訪問,即同步和互斥。同時(shí)掌握信號(hào)量在互斥訪問中的使用。掌握生產(chǎn)者和消費(fèi)者問題的流程和實(shí)現(xiàn)方法。同時(shí)提高編程的能力、對(duì)問題的解決能力及查閱文檔的能力。</p><p><b>
5、 課程設(shè)計(jì)內(nèi)容與要求</b></p><p> 1、通過研究Linux的進(jìn)程同步機(jī)制和信號(hào)量,實(shí)現(xiàn)特殊的生產(chǎn)者與消費(fèi)者問題的并發(fā)控制。</p><p> 2、說明:有兩類生產(chǎn)者,一類負(fù)責(zé)生產(chǎn)桔子,一類負(fù)責(zé)生產(chǎn)蘋果;有兩類消費(fèi)者,一類負(fù)責(zé)消費(fèi)桔子,一類負(fù)責(zé)消費(fèi)蘋果;他們共享一個(gè)有20個(gè)存儲(chǔ)單元的有界緩沖區(qū),每個(gè)存儲(chǔ)單元只能放入一種產(chǎn)品(桔子/蘋果)。</p>&
6、lt;p><b> 3、設(shè)計(jì)要求:</b></p><p> 二類生產(chǎn)者與二類消費(fèi)者數(shù)目均為20,即20個(gè)生產(chǎn)者負(fù)責(zé)生產(chǎn)桔子,20個(gè)生產(chǎn)者負(fù)責(zé)生產(chǎn)蘋果;20個(gè)消費(fèi)者負(fù)責(zé)消費(fèi)桔子,20個(gè)消費(fèi)者負(fù)責(zé)消費(fèi)蘋果</p><p> 二類生產(chǎn)者的生產(chǎn)速度與二類消費(fèi)者的消費(fèi)速度均可獨(dú)立在程序界面調(diào)節(jié),在運(yùn)行中,該值調(diào)整后立即生效</p><p>
7、 多個(gè)生產(chǎn)者或多個(gè)消費(fèi)者之間必須有共享對(duì)緩沖區(qū)進(jìn)行操作的函數(shù)代碼,同時(shí)需要考慮算法的效率性</p><p> 每個(gè)生產(chǎn)者和消費(fèi)者對(duì)有界緩沖區(qū)進(jìn)行操作后,即時(shí)顯示有界緩沖區(qū)的全部內(nèi)容、當(dāng)前生產(chǎn)者與消費(fèi)者的指針位置,以及生產(chǎn)者和消費(fèi)者線程標(biāo)識(shí)符</p><p> 采用可視化界面,可在運(yùn)行過程中隨時(shí)暫停,查看當(dāng)前生產(chǎn)者、消費(fèi)者以及有界緩沖區(qū)的狀態(tài)</p><p>&
8、lt;b> 系統(tǒng)分析與設(shè)計(jì)</b></p><p><b> 1、系統(tǒng)分析</b></p><p> 1.此次任務(wù)是實(shí)現(xiàn)特殊生產(chǎn)者和消費(fèi)者的演示程序,所需要處理的信息是生產(chǎn)者和消費(fèi)者的個(gè)數(shù),生產(chǎn)蘋果、橘子和消費(fèi)蘋果、橘子的速度控制,緩沖區(qū)中橘子和蘋果的個(gè)數(shù)和當(dāng)前生產(chǎn)、消費(fèi)指針的位置。</p><p> 2.程序中需要處
9、理緩沖區(qū)的動(dòng)態(tài)顯示、生產(chǎn)者和消費(fèi)者的速度可以調(diào)節(jié),生產(chǎn)者和消費(fèi)者個(gè)數(shù)可以改變。為了實(shí)現(xiàn)界面的友好性,應(yīng)該對(duì)用戶標(biāo)明清楚各個(gè)模塊的作用。同時(shí)實(shí)時(shí)的對(duì)程序進(jìn)行暫停和停止。演示程序中用圖形顯示的方法描述緩沖區(qū)的使用情況,即當(dāng)前緩沖區(qū)有多少個(gè)蘋果和橘子,還有生產(chǎn)和消費(fèi)者的指針。</p><p> 3.系統(tǒng)對(duì)外的界面如下:</p><p> 可以調(diào)節(jié)橘子和蘋果的生產(chǎn)速度和消費(fèi)蘋果和橘子的速度,在
10、文本框中輸入相應(yīng)的速度,再按下修改按鍵即可實(shí)現(xiàn)速度的實(shí)時(shí)調(diào)節(jié)。</p><p> 在蘋果生產(chǎn)者、橘子生產(chǎn)者、蘋果消費(fèi)者、橘子消費(fèi)者中實(shí)現(xiàn)對(duì)個(gè)數(shù)按鈕的按下即可動(dòng)態(tài)實(shí)時(shí)的調(diào)節(jié)生產(chǎn)者和消費(fèi)者的個(gè)數(shù)的調(diào)節(jié)。</p><p> 在界面的最下面點(diǎn)擊開始按鈕,程序開始運(yùn)行,暫停按鈕使程序暫停掛起,再點(diǎn)擊則可以繼續(xù)運(yùn)行。停止按鈕實(shí)現(xiàn)此次程序的演示結(jié)束。</p><p> 4.
11、此次使用java平臺(tái)實(shí)現(xiàn),保證了程序在各種機(jī)器的運(yùn)行,只需要事前建立java的運(yùn)行環(huán)境即可,便于程序的移植</p><p><b> 5.系統(tǒng)界面如下:</b></p><p><b> 2、系統(tǒng)設(shè)計(jì):</b></p><p><b> 2.1、模塊設(shè)計(jì):</b></p><
12、p> 2.2、數(shù)據(jù)結(jié)構(gòu)說明:</p><p> 1.緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu):雙端隊(duì)列</p><p> 說明:左端放置生產(chǎn)蘋果的指針,右端放置生產(chǎn)橘子的指針。</p><p> 2.緩沖區(qū)操作的類圖,實(shí)現(xiàn)對(duì)緩沖區(qū)的實(shí)際操作</p><p> 2.3、算法流程圖:</p><p><b> 1.生產(chǎn)
13、蘋果算法</b></p><p><b> 2.消費(fèi)蘋果算法</b></p><p><b> 3.繪圖算法</b></p><p> 4.生產(chǎn)蘋果者人工智能算法(生產(chǎn)橘子人工智能相似)</p><p> 5.蘋果消費(fèi)者人工智能算法(生產(chǎn)橘子算法類似)</p>&l
14、t;p> 四、系統(tǒng)測(cè)試與調(diào)試分析</p><p><b> 1、系統(tǒng)測(cè)試</b></p><p> ?。?)因?yàn)楫?dāng)蘋果生產(chǎn)者在緩沖區(qū)滿了以后自動(dòng)阻塞,需要蘋果消費(fèi)者喚醒,所以需要測(cè)試喚醒的實(shí)現(xiàn)是否正常。</p><p> (2)因?yàn)楫?dāng)蘋果生產(chǎn)者在緩沖區(qū)滿了以后自動(dòng)阻塞,需要蘋果消費(fèi)者喚醒,所以需要測(cè)試</p><
15、p> 喚醒的實(shí)現(xiàn)是否正常。</p><p> ?。?)測(cè)試生產(chǎn)者和消費(fèi)者的速度是否可以調(diào)節(jié)</p><p> ?。?)實(shí)現(xiàn)了人工智能操作:即系統(tǒng)自動(dòng)保持生產(chǎn)者和消費(fèi)者的相對(duì)平衡,測(cè)試功能的正確實(shí)現(xiàn)</p><p><b> 2、調(diào)試分析:</b></p><p> ?。?)程序編寫過程中,因?yàn)橛袃蓚€(gè)生產(chǎn)者和消費(fèi)
16、者,極易把操作寫錯(cuò)。在編寫增加蘋果數(shù)量額函數(shù)中,程序中午無法增加蘋果數(shù)量。</p><p> 解決辦法:在函數(shù)中查找錯(cuò)誤,對(duì)蘋果的操作寫成了對(duì)橘子的操作,導(dǎo)致程序出現(xiàn)問題。</p><p> (2)在對(duì)緩沖區(qū)進(jìn)行繪圖的時(shí)候,java的JComponent組件內(nèi)繪圖位置出現(xiàn)錯(cuò)誤。</p><p> 解決辦法:JComponent內(nèi)繪圖時(shí)因?yàn)镴Component內(nèi)
17、使用的是相對(duì)坐標(biāo),所以不能使用面板的絕對(duì)坐標(biāo),換成相對(duì)坐標(biāo)正確繪圖。</p><p> ?。?)實(shí)現(xiàn)人工智能操作的時(shí)候,點(diǎn)擊相應(yīng)按鈕無法執(zhí)行</p><p> 解決辦法:在排查完畢后,發(fā)現(xiàn)按鍵響應(yīng)沒有對(duì)程序已經(jīng)設(shè)計(jì)的標(biāo)志值進(jìn)行修改,致使程序沒有按預(yù)期執(zhí)行,修改完標(biāo)志值即可以。</p><p><b> 五、用戶手冊(cè)</b></p>
18、;<p> 1.使用的語言和平臺(tái)</p><p> 本次實(shí)驗(yàn)使用的是java 語言的eclipse平臺(tái)</p><p> 2.對(duì)于程序運(yùn)行環(huán)境的注意事項(xiàng)</p><p> 需要安裝java運(yùn)行環(huán)境,eclipss平臺(tái)不需要安裝,只需要下載完成就可以使用。</p><p><b> 3.程序使用步驟</b
19、></p><p> 圖1:系統(tǒng)登錄界面。</p><p> 圖2:生產(chǎn)者速度調(diào)節(jié) 圖3:消費(fèi)者速度調(diào)節(jié)</p><p> 圖4:生產(chǎn)者數(shù)量調(diào)節(jié) 圖5:消費(fèi)者數(shù)量調(diào)節(jié)</p><p><b> 圖 6::控制界面</b></p&g
20、t;<p> 圖7:動(dòng)態(tài)可視化緩沖區(qū)</p><p><b> 4.程序使用步驟:</b></p><p> 1)單擊開始按鈕,程序開始初始化執(zhí)行</p><p> 2)點(diǎn)擊增加按鈕分別增加生產(chǎn)者和消費(fèi)者,可以看到可視化緩沖區(qū)開始運(yùn)動(dòng)</p><p> 3)在速度調(diào)節(jié)部分調(diào)節(jié)生產(chǎn)者和消費(fèi)者的速度,
21、可以看到緩沖區(qū)出現(xiàn)預(yù)期的產(chǎn)品種類和數(shù)量的變化。</p><p> 4)在程序運(yùn)行狀態(tài),可以點(diǎn)擊“人工智能”按鈕,可以實(shí)現(xiàn)人工智能自動(dòng)操作緩沖區(qū),保持緩沖區(qū)的產(chǎn)品數(shù)量和種類的穩(wěn)定,不至于產(chǎn)品數(shù)量過多或過少,也不會(huì)出現(xiàn)某種產(chǎn)品數(shù)量過多或者過少。</p><p><b> 六、程序清單</b></p><p> public void incr
22、easeapple()</p><p><b> {</b></p><p> empty.acquire(); //相當(dāng)于信號(hào)量的P操作,申請(qǐng)空緩沖區(qū)</p><p> mutex.acquire(); //互斥信號(hào)量</p><p> if(pointapple+1 != pointorange){&
23、lt;/p><p> pointapple++;</p><p> if(pointapple == 20)</p><p> pointapple=19;</p><p> isFull[pointapple] = true; //將生產(chǎn)了產(chǎn)品的標(biāo)志位設(shè)置為滿applenum++;</p><p>
24、 storage[pointapple] = 'A';//存儲(chǔ)生產(chǎn)的產(chǎn)品</p><p> pool[pointapple] = 1;//標(biāo)志此位置生產(chǎn)的是蘋果,1表示蘋果</p><p><b> }</b></p><p> String str2 = Thread.currentThread().getName()
25、;</p><p> Apple.textArea2.append("生產(chǎn)者生產(chǎn)了一個(gè)蘋果" + str2 + " 運(yùn)行\(zhòng)n");</p><p><b> number++;</b></p><p> Apple.textArea1.append("倉庫中的產(chǎn)品個(gè)數(shù)為" + n
26、umber + "\n");</p><p> Apple.textArea1.append("它們是:\n");</p><p> for (int j = 0; j < 20; j++)</p><p><b> {</b></p><p> if(storage
27、[j] != '0')</p><p> Apple.textArea1.append("("+j+")"+storage[j] + " ");</p><p><b> else </b></p><p> Apple.textArea1.append(&quo
28、t; ");</p><p><b> }</b></p><p> Apple.textArea1.append("\n");</p><p> mutex.release();//釋放互斥鎖</p><p> full.release();//增加滿信號(hào)量的值</p>
29、<p> apple.release();//增加蘋果信號(hào)量的值</p><p><b> }</b></p><p> public void increaseorange()</p><p><b> {</b></p><p> empty.acquire();//相當(dāng)
30、于信號(hào)量的P操作,申請(qǐng)空緩沖區(qū)</p><p> mutex.acquire();//互斥進(jìn)入臨界區(qū)</p><p> if(pointapple+1!= pointorange){</p><p> pointorange--;</p><p> if(pointorange < 0)</p><p>
31、 pointorange = 0;</p><p> isFull[pointorange] = true;//將此位置設(shè)置成滿狀態(tài)</p><p> orangenum++;</p><p> storage[pointorange] = 'O';//存儲(chǔ)生產(chǎn)產(chǎn)品,O表示橘子</p><p> pool[point
32、orange] = 2;//標(biāo)志此位置是橘子,2表示橘子</p><p><b> }</b></p><p> String str2 = Thread.currentThread().getName();</p><p> Apple.textArea2.append("生產(chǎn)者生產(chǎn)了一個(gè)橘子" + str2 + &
33、quot; 運(yùn)行\(zhòng)n");</p><p><b> number++;</b></p><p> Apple.textArea1.append("倉庫中的數(shù)字個(gè)數(shù)為" + number + "\n");</p><p> Apple.textArea1.append("它們是:
34、\n");</p><p> for (int j = 0; j < 20; j++)</p><p><b> {</b></p><p> if(storage[j] != '0')</p><p> Apple.textArea1.append("("+j
35、+")"+storage[j] + " ");</p><p><b> else </b></p><p> Apple.textArea1.append(" ");</p><p><b> }</b></p><p> App
36、le.textArea1.append("\n");</p><p> mutex.release();//退出臨界區(qū)</p><p> full.release();//增加滿信號(hào)量的值</p><p> orange.release();//增加橘子信號(hào)量的值</p><p><b> }</b
37、></p><p> public void decreaseapple()</p><p><b> {</b></p><p> apple.acquire();//申請(qǐng)獲得蘋果</p><p> full.acquire();//申請(qǐng)滿緩沖區(qū)</p><p> mutex.a
38、cquire();//互斥進(jìn)入臨界區(qū)</p><p> String str2 = Thread.currentThread().getName();</p><p> Apple.textArea2.append("消費(fèi)者" + str2 + " 運(yùn)行\(zhòng)n");</p><p><b> number--;&
39、lt;/b></p><p> applenum--;</p><p> isFull[pointapple] = false;//此位置設(shè)置為空</p><p> pool[pointapple] = 0;//標(biāo)志此位置是空位置,0表示空</p><p> Apple.textArea2.append("蘋果消費(fèi)一個(gè)
40、" +storage[applepool[applenum]]+ " 運(yùn)行\(zhòng)n");</p><p> storage[pointapple] = '0';</p><p> pointapple--; //蘋果指針減1</p><p> Apple.textArea1.append("倉庫中的數(shù)字個(gè)
41、數(shù)為" + number + "\n");</p><p> Apple.textArea1.append("它們是:\n");</p><p> for (int j = 0; j < 20; j++)</p><p><b> {</b></p><p>
42、 if(storage[j] != '0')</p><p> Apple.textArea1.append("("+j+")"+storage[j] + " ");</p><p><b> else </b></p><p> Apple.textArea1
43、.append(" ");</p><p><b> }</b></p><p> Apple.textArea1.append("\n");</p><p> mutex.release();//退出臨界區(qū)</p><p> empty.release();//空緩沖區(qū)信
44、號(hào)量+1</p><p><b> }</b></p><p> public void decreaseorange()</p><p><b> {</b></p><p> orange.acquire();//申請(qǐng)獲得橘子</p><p> full.acq
45、uire();//申請(qǐng)滿緩沖區(qū)</p><p> mutex.acquire();//互斥進(jìn)入臨界區(qū)</p><p> String str2 = Thread.currentThread().getName();</p><p> Apple.textArea2.append("消費(fèi)者" + str2 + " 運(yùn)行\(zhòng)n"
46、;);</p><p><b> number--;</b></p><p> orangenum--; </p><p> isFull[pointorange] = false;</p><p> pool[pointorange] = 0;</p><p> Apple.t
47、extArea2.append("橘子消費(fèi)一個(gè)" + storage[orangepool[orangenum]] + " 運(yùn)行\(zhòng)n");</p><p> storage[pointorange] = '0';</p><p> pointorange++; //橘子指針右移一位</p>
48、<p> Apple.textArea1.append("倉庫中的數(shù)字個(gè)數(shù)為" + number + "\n");</p><p> Apple.textArea1.append("它們是:\n");</p><p> for (int j = 0; j < 20; j++)</p><
49、p><b> {</b></p><p> if(storage[j] != '0')</p><p> Apple.textArea1.append("("+j+")"+storage[j] + " ");</p><p><b> else
50、</b></p><p> Apple.textArea1.append(" ");</p><p><b> }</b></p><p> Apple.textArea1.append("\n");</p><p> mutex.release();//退出臨
51、界區(qū)</p><p> empty.release();//空信號(hào)量+1</p><p><b> }</b></p><p> class Semaphore{</p><p> int value;</p><p> public Semaphore(int v){</p>
52、;<p> this.value = v;</p><p><b> }</b></p><p> //定義P原語操作,原語操作就是執(zhí)行時(shí)不能中斷,所以synchronized修飾</p><p> public synchronized void acquire(){</p><p><
53、;b> value--;</b></p><p> if(value<0){</p><p><b> try {</b></p><p> this.wait();</p><p> } catch (InterruptedException e) {</p><p
54、> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> public synchronized void release(){</
55、p><p><b> value++;</b></p><p> if(value<=0){</p><p> this.notify();</p><p><b> }</b></p><p><b> }</b></p>&
56、lt;p><b> }</b></p><p><b> }</b></p><p> public static int increaseappleProducer()//增加蘋果生產(chǎn)者線程</p><p><b> {</b></p><p> if(i1
57、< 20)</p><p><b> {</b></p><p> appleincrease[i1] = new Increaseapple(myStorage);</p><p> appleincrease[i1].start();</p><p><b> i1++;</b>&
58、lt;/p><p><b> }</b></p><p> return i1;</p><p><b> }</b></p><p> public static int increaseorangeProducer()//增加橘子生產(chǎn)者線程</p><p><b
59、> {</b></p><p> if(i2 < 20)</p><p><b> {</b></p><p> orangeincrease[i2] = new Increaseorange(myStorage);</p><p> orangeincrease[i2].start()
60、;</p><p><b> i2++;</b></p><p><b> }</b></p><p> return i2;</p><p><b> }</b></p><p> public static int decreaseappl
61、eProducer()//減少蘋果生產(chǎn)者線程</p><p><b> {</b></p><p> if(i1 > 0)</p><p><b> {</b></p><p> appleincrease[i1 - 1].out = true;</p><p>
62、; appleincrease[i1 - 1] = null;</p><p><b> i1--;</b></p><p><b> }</b></p><p> return i1;</p><p><b> }</b></p><p>
63、 public static int decreaseorangeProducer()//減少橘子生產(chǎn)者線程</p><p><b> {</b></p><p> if(i2 > 0)</p><p><b> {</b></p><p> orangeincrease[i2 - 1
64、].out = true;</p><p> orangeincrease[i2 - 1] = null;</p><p><b> i2--;</b></p><p><b> }</b></p><p> return i2;</p><p><b>
65、 }</b></p><p> public static int increaseappleConsumer()//增加蘋果消費(fèi)者線程</p><p><b> {</b></p><p> if(d1 < 20)</p><p><b> {</b></p&g
66、t;<p> appledecrease[d1] = new Decreaseapple(myStorage);</p><p> appledecrease[d1].start();</p><p><b> d1++;</b></p><p><b> }</b></p><p
67、> return d1;</p><p><b> }</b></p><p> public static int increaseorangeConsumer()//增加橘子消費(fèi)者線程</p><p><b> {</b></p><p> if(d2 < 20)</
68、p><p><b> {</b></p><p> orangedecrease[d2] = new Decreaseorange(myStorage);</p><p> orangedecrease[d2].start();</p><p><b> d2++;</b></p>
69、<p><b> }</b></p><p> return d2;</p><p><b> }</b></p><p> public static int decreaseappleConsumer()//減少蘋果消費(fèi)者線程</p><p><b> {<
70、;/b></p><p> if(d1 > 0)</p><p><b> {</b></p><p> appledecrease[d1 - 1].out = true;</p><p> appledecrease[d1 - 1] = null;</p><p><b
71、> d1--;</b></p><p><b> }</b></p><p> return d1;</p><p><b> }</b></p><p> public static int decreaseorangeConsumer()//減少橘子消費(fèi)者線程<
72、/p><p><b> {</b></p><p> if(d2 > 0)</p><p><b> {</b></p><p> orangedecrease[d2 - 1].out = true;</p><p> orangedecrease[d2 - 1]
73、 = null;</p><p><b> d2--;</b></p><p><b> }</b></p><p> return d2;</p><p><b> }</b></p><p><b> 七、體會(huì)與自我評(píng)價(jià)</
74、b></p><p> 對(duì)于此次課程設(shè)計(jì),我使用的是做圖形用戶界面比較容易的java語言,但是自己對(duì)java的掌握也不是很深入,尤其是這門不斷發(fā)展壯大的語言,里面包含了各方面的操作,所以掌握起來難度不小,此次課設(shè)基本上都是在開學(xué)后的這兩周內(nèi)完成的。</p><p> 這次實(shí)驗(yàn)中需要用到的操作種類很多很雜亂,我都是先在紙上設(shè)計(jì)完完畢,之后再一點(diǎn)點(diǎn)的將它在計(jì)算機(jī)中實(shí)現(xiàn)預(yù)期的效果,在一
75、點(diǎn)點(diǎn)的設(shè)計(jì)中,每當(dāng)攻克了一個(gè)自己認(rèn)為難的地方的時(shí)候,就會(huì)有一種喜悅感產(chǎn)生,促使我去解決更多的問題,這就是學(xué)習(xí)的樂趣吧,只是單純的將自己的任務(wù)完善,追求更高的要求。后來自己做程序做上癮了,不斷有新奇的想法蹦出來,我就開始癡迷的設(shè)計(jì)實(shí)現(xiàn),結(jié)果到現(xiàn)在程序的質(zhì)量已經(jīng)遠(yuǎn)遠(yuǎn)超過了我的預(yù)期。我自此明白了學(xué)習(xí)追求上的快樂。此次課程設(shè)計(jì)在實(shí)現(xiàn)緩沖區(qū)動(dòng)態(tài)圖形顯示的時(shí)候自己遇到了困境,在查閱了多方資料后仍然沒有什么進(jìn)展,自己開始著急,擔(dān)心會(huì)做不完,不過依舊每
76、天呆在電腦前,不斷的積累經(jīng)驗(yàn),最后才找到繪圖的方法,成果的在界面中描繪出了自己想要的圖形。</p><p> 自己一直都想去追求更高的分?jǐn)?shù),做的盡善盡美,力圖超額完成老師的任務(wù),不斷的添加自己想到的新功能。但最后完成課程設(shè)計(jì)的時(shí)候,我終于明白,分?jǐn)?shù)不過是個(gè)數(shù)字,知識(shí)才是自己的。通過這次課程設(shè)計(jì),我確實(shí)學(xué)到了很多東西,多年后我可能已經(jīng)忘記這次課設(shè)最后打了多少分,但這些學(xué)到的東西卻可以使我受益終生。除了知識(shí)技術(shù)上的
77、東西,我更鍛煉了自己的快速學(xué)習(xí)能力;我學(xué)會(huì)了如何快速有效地從圖書館、網(wǎng)絡(luò)獲取自己需要的信息;我嘗到了在周圍很多同學(xué)拷來拷去時(shí)孤軍奮戰(zhàn)的痛苦;我體會(huì)了夜以繼日完成一個(gè)項(xiàng)目時(shí)中途過程的艱辛及最終完成后巨大的成就感……我更加深了人生的信心,以后面對(duì)任何一個(gè)困難的項(xiàng)目,我想我都不會(huì)懼怕,并最終能夠成功地將其完成。</p><p> 感謝老師,感謝此次課程設(shè)計(jì)。雖然在其中吃了不少苦頭,但我毫不后悔,因?yàn)槲覞M載而歸。<
78、;/p><p><b> 八、參考文獻(xiàn)</b></p><p> [1] 湯子瀛 編著,《計(jì)算機(jī)操作系統(tǒng)(修訂版)》,西安電子科技大學(xué)出版社,2001</p><p> [2] 操作系統(tǒng)教程與實(shí)驗(yàn) 胡明慶,高巍,鐘梅 清華大學(xué)出版社 2007.1 </p><p> [3] Cay S.Horstmann ,Gay
79、cornell著 ,《java核心技術(shù)》(第八版),機(jī)械工業(yè)出版社 2008</p><p> [4] BrucEckel著, 《java編程思想》(第四版)機(jī)械工業(yè)出版社 2007</p><p> [5] Rogers Cadenhead著,梅興文譯,Java編程入門經(jīng)典,人民郵電出版社,2007</p><p> 九、課程設(shè)計(jì)評(píng)價(jià)(由任課教師填寫)<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程通信與進(jìn)程同步機(jī)制實(shí)踐
- 操作系統(tǒng)課程設(shè)計(jì)--進(jìn)程通信與進(jìn)程同步機(jī)制實(shí)踐
- 進(jìn)程同步典型例題操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告--蘋果問題
- 操作系統(tǒng)課程設(shè)計(jì)--蘋果問題
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)報(bào)告
- 北郵大三上-操作系統(tǒng)-進(jìn)程同步實(shí)驗(yàn)報(bào)告
- 操作系統(tǒng)_進(jìn)程調(diào)度算法課程設(shè)計(jì)報(bào)告
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)
- 操作系統(tǒng)進(jìn)程調(diào)度課程設(shè)計(jì)
- 操作系統(tǒng)模擬進(jìn)程課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程管理系統(tǒng)
- 進(jìn)程同步模擬課程設(shè)計(jì)——司機(jī)和售票員問題
- 進(jìn)程調(diào)度算法 操作系統(tǒng)課程設(shè)計(jì)
- 多進(jìn)程同步方法演示“生產(chǎn)者-消費(fèi)者”問題
- 操作系統(tǒng)進(jìn)程控制課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程的創(chuàng)建
- 操作系統(tǒng)課程設(shè)計(jì)-進(jìn)程調(diào)度模擬
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程調(diào)度算法
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論