2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  信息科學(xué)與工程學(xué)院</b></p><p>  《操作系統(tǒng)課程設(shè)計》總結(jié)報告</p><p>  題 目: 通用處理器調(diào)度演示實驗</p><p><b>  一、課程設(shè)計目的</b></p><p>  操作系統(tǒng)課程設(shè)計是軟件工程專業(yè)的主要實踐性教學(xué)環(huán)節(jié)。在

2、進(jìn)行了專業(yè)基礎(chǔ)課和《操作系統(tǒng)》課程的學(xué)習(xí)基礎(chǔ)上,設(shè)計或分析一個實際的操作系統(tǒng)旨在加深對計算機(jī)硬件結(jié)構(gòu)和系統(tǒng)軟件的認(rèn)識,初步掌握操作系統(tǒng)組成模塊和應(yīng)用接口的使用方法,提高進(jìn)行工程設(shè)計和系統(tǒng)分析的能力,為畢業(yè)設(shè)計和以后的工程實踐打下良好的基礎(chǔ)。</p><p>  二、課程設(shè)計內(nèi)容與要求</p><p><b>  2.1設(shè)計目的</b></p><p

3、>  在多道程序和多任務(wù)系統(tǒng)中,系統(tǒng)內(nèi)同時處于就緒狀態(tài)的進(jìn)程可能有若干個,也就是能運(yùn)行的進(jìn)程數(shù)大于處理機(jī)個數(shù),為了使系統(tǒng)中的進(jìn)程有條不紊地工作,必須選用某種調(diào)度策略,在一定的時機(jī)選擇一個進(jìn)程占有處理機(jī)。要求學(xué)生設(shè)計一個模擬處理機(jī)調(diào)度算法,以鞏固和加深處理機(jī)調(diào)度的概念。</p><p>  2.2設(shè)計要求(多道、單處理機(jī))</p><p>  1) 進(jìn)程調(diào)度算法包括:時間片輪轉(zhuǎn)算法、先

4、來先服務(wù)算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權(quán)優(yōu)先調(diào)度算法、高響應(yīng)比調(diào)度算法。</p><p>  2) 每一個進(jìn)程有一個PCB,其內(nèi)容可以根據(jù)具體情況設(shè)定。</p><p>  3) 進(jìn)程數(shù)、進(jìn)入內(nèi)存時間、要求服務(wù)時間、作業(yè)大小、優(yōu)先級等均可以在界面上設(shè)定。</p><p>  4) 可讀取樣例數(shù)據(jù)(要求存放在外部文件中)進(jìn)行進(jìn)程數(shù)、進(jìn)入內(nèi)存時間、時間片長度、作業(yè)大小、

5、進(jìn)程優(yōu)先級的初始化。</p><p>  5) 可以在運(yùn)行中顯示各進(jìn)程的狀態(tài):就緒、執(zhí)行(由于不要求設(shè)置互斥資源與進(jìn)程間同步關(guān)系,故只有兩種狀態(tài))。</p><p>  6) 采用可視化界面,可在進(jìn)程調(diào)度過程中隨時暫停調(diào)度,查看當(dāng)前進(jìn)程的狀態(tài)以及相應(yīng)的阻塞隊列。</p><p>  7) 有能比較的功能,可比較同一組數(shù)據(jù)在不同調(diào)度算法下的平均周轉(zhuǎn)時間。</p&

6、gt;<p>  8) 具有一定的數(shù)據(jù)容錯性。</p><p>  三、功能模擬系統(tǒng)分析與設(shè)計</p><p><b>  3.1系統(tǒng)分析 </b></p><p>  本課程設(shè)計的目的就是模擬一種通用處理器的五種調(diào)度算法來實現(xiàn)進(jìn)程調(diào)度的過程,加深對進(jìn)程調(diào)度的理解,輸出采用采用可視化界面,可在進(jìn)程調(diào)度過程中隨時暫停調(diào)度,查看當(dāng)前進(jìn)

7、程的狀態(tài)以及相應(yīng)的阻塞隊列,進(jìn)程控制塊(PCB)是這個程序設(shè)計的核心,PCB包含了到達(dá)時間,運(yùn)行時間,優(yōu)先級等關(guān)鍵數(shù)據(jù),要求可以用五種調(diào)度算法演示,我們可以用策略模式把五個算法打包通過一個接口連接CPU,實現(xiàn)算法和CPU的分離,算法有5五種,分別實現(xiàn)不同的調(diào)度演示(時間片輪轉(zhuǎn)算法、先來先服務(wù)算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權(quán)優(yōu)先調(diào)度算法、高響應(yīng)比調(diào)度算法)</p><p>  我們采用MVC(模型-視圖-控制器)的

8、設(shè)計方法,輸入方式的采用界面直接輸入和文件讀取輸入兩種方法,視圖主要展示進(jìn)程的進(jìn)程名、到達(dá)時間、運(yùn)行時間、優(yōu)先級、時間片、響應(yīng)時間、結(jié)束時間、周轉(zhuǎn)時間,表示方法我們采用Java圖形界面輸出,動態(tài)演示調(diào)度算法的實現(xiàn)過程,以加深對操作系統(tǒng)進(jìn)程調(diào)度的理解。</p><p><b>  3.2系統(tǒng)設(shè)計</b></p><p><b>  3.2.1設(shè)計思想</

9、b></p><p>  圖3-1 進(jìn)程控制塊(PCB)</p><p>  圖3-2 進(jìn)程狀態(tài)圖</p><p>  1、每個進(jìn)程有一個進(jìn)程控制塊(PCB)表示。進(jìn)程控制塊可以包含如下信息:進(jìn)程名、優(yōu)先級數(shù)、到達(dá)時間、需要運(yùn)行時間等等。 </p><p>  2、進(jìn)程的信息,包括到達(dá)時間,優(yōu)先數(shù)及需要的運(yùn)行時間等都是事先人為地指定

10、。 </p><p>  3、每個進(jìn)程的狀態(tài)可以是就緒 W(Wait)、運(yùn)行R(Run)、或完成F(Finish)三種狀態(tài)之一。</p><p>  3.2.2算法分析 </p><p>  先來先服務(wù)調(diào)度算法 FCFS:First Come First Serve。</p><p>  總是把當(dāng)前處于就緒隊列之首的那個進(jìn)程調(diào)度到運(yùn)行狀態(tài)。也

11、就說,它只考慮進(jìn)程進(jìn)入就緒隊列的先后,而不考慮它的下一個CPU周期的長短及其他因素。FCFS算法簡單易行,但性能卻不大好。</p><p>  最短短作業(yè)(進(jìn)程)優(yōu)先調(diào)度算法SJF:Shortest Job First。</p><p>  稱為“短進(jìn)程優(yōu)先”SPN(Shortest Process Next);這是對FCFS算法的改進(jìn),其目標(biāo)是減少平均周轉(zhuǎn)時間。</p>&

12、lt;p>  高優(yōu)先權(quán)優(yōu)先調(diào)度算法HPF:Highest Priority First。</p><p>  多級隊列算法的改進(jìn),平衡各進(jìn)程對響應(yīng)時間的要求。適用于作業(yè)調(diào)度和進(jìn)程調(diào)度,可分成搶先式和非搶先式。</p><p>  (四)最高響應(yīng)比優(yōu)先調(diào)度算法HRN:Highest Response Ratio Next。 </p><p>  最高響應(yīng)比優(yōu)先法

13、(HRN,Highest Response_ratio Next)是對FCFS方式和SJF方式的一種綜合平衡。FCFS方式只考慮每個作業(yè)的等待時間而未考慮執(zhí)行時間的長短,而SJF方式只考慮執(zhí)行時間而未考慮等待時間的長短。因此,這兩種調(diào)度算法在某些極端情況下會帶來某些不便。HRN調(diào)度策略同時考慮每個作業(yè)的等待時間長短和估計需要的執(zhí)行時間長短,從中選出響應(yīng)比最高的作業(yè)投入執(zhí)行。</p><p> ?。ㄎ澹┗跁r間片的

14、輪調(diào)度算法(RR)。</p><p>  將系統(tǒng)中所有的就緒進(jìn)程按照FCFS原則,排成一個隊列。每次調(diào)度時將CPU分派給隊首進(jìn)程,讓其執(zhí)行一個時間片。時間片的長度從幾個ms到幾百ms。在一個時間片結(jié)束時,發(fā)生時鐘中斷。調(diào)度程序據(jù)此暫停當(dāng)前進(jìn)程的執(zhí)行,將其送到就緒隊列的末尾,并通過上下文切換執(zhí)行當(dāng)前的隊首進(jìn)程。進(jìn)程可以未使用完一個時間片,就出讓CPU(如阻塞)。</p><p><b&

15、gt;  3.2.3模塊設(shè)計</b></p><p><b>  1)輸入模塊</b></p><p>  能夠滿足輸入進(jìn)程基本信息的功能,盡可能提供友好的交互界面。給用戶很好的提示,使用戶能夠方便的操作。</p><p>  可讀取樣例數(shù)據(jù)(要求存放在外部文件中)進(jìn)行進(jìn)程數(shù)、進(jìn)入內(nèi)存時間、時間片長度、作業(yè)大小、進(jìn)程優(yōu)先級的初始化。

16、</p><p><b>  算法模塊</b></p><p>  可以根據(jù)需求選擇五種算法中的一種運(yùn)行:</p><p>  (一)先來先服務(wù)調(diào)度算法 FCFS:First Come First Serve。</p><p>  1.基本思想:按作業(yè)(進(jìn)程)到達(dá)時間先后順序依次使用CPU。</p><

17、;p>  2.適用于作業(yè)/進(jìn)程調(diào)度。</p><p>  3.非搶占調(diào)度方式。</p><p><b>  4.優(yōu)缺點。</b></p><p><b>  優(yōu)點:實現(xiàn)簡單。</b></p><p>  缺點:未考慮進(jìn)程的優(yōu)先級或緊急性,不利于短作業(yè)(進(jìn)程)的運(yùn)行,利于CPU繁忙型作業(yè),而不利

18、于I/O繁忙型作業(yè)。很少單獨使用,常與其他算法結(jié)合使用(輔助算法)。</p><p> ?。ǘ┒套鳂I(yè)(進(jìn)程)優(yōu)先調(diào)度算法SJF:Shortest Job First。</p><p>  基本思想:選擇就緒(后備)隊列中估計運(yùn)行時間最短的進(jìn)程(作業(yè))投入運(yùn)行。</p><p>  2.適用于作業(yè)/進(jìn)程調(diào)度。</p><p>  3.非搶占調(diào)

19、度方式——>最短剩余時間優(yōu)先算法或 搶占調(diào)度方式。</p><p><b>  4.優(yōu)缺點。</b></p><p>  優(yōu)點:有效縮短作業(yè)的平均周轉(zhuǎn)時間,從而提高系統(tǒng)吞吐量。</p><p>  缺點:不利于長作業(yè)和緊迫作業(yè)的運(yùn)行(無法滿足公平性,估計有主觀性)</p><p> ?。ㄈ└邇?yōu)先權(quán)優(yōu)先調(diào)度算法HP

20、F:Highest Priority First。 </p><p>  引入:為照顧緊迫型作業(yè)優(yōu)先處理,“急事急辦”,“重要事先辦”。</p><p>  1.基本思想:選擇優(yōu)先級最高的進(jìn)程或作業(yè)投入運(yùn)行。</p><p>  2.適用于作業(yè)/進(jìn)程調(diào)度。</p><p><b>  3.調(diào)度方式。</b></p&

21、gt;<p>  非搶占調(diào)度方式——批處理系統(tǒng):“等你打完我再打”。</p><p>  搶占調(diào)度方式——實時系統(tǒng):“不等你打完電話,搶過話筒就打”。</p><p>  4.優(yōu)先權(quán)(優(yōu)先級):即優(yōu)先數(shù),是由系統(tǒng)或用戶按某種原則指定的,一般用整數(shù)表示。</p><p><b>  靜態(tài)優(yōu)先權(quán)</b></p>&l

22、t;p>  “一定終身”是在創(chuàng)建進(jìn)程/作業(yè)時確定的,且在整個運(yùn)行期間保持不變。優(yōu)先級的確定依據(jù):用戶要求、進(jìn)程/作業(yè)類型、對資源的要求不同系統(tǒng)有不同的確定原則,及表求方法。</p><p>  優(yōu)點:簡單易行,系統(tǒng)開銷小。</p><p>  缺點:不夠精確,可能出現(xiàn)某些低優(yōu)先級的進(jìn)程永不能被執(zhí)行。</p><p><b>  (2)動態(tài)優(yōu)先權(quán)<

23、;/b></p><p>  是在創(chuàng)建進(jìn)程/作業(yè)時賦予的優(yōu)先級,可隨著進(jìn)程的推進(jìn)而改變。決定/動態(tài)改變因素:等待時間、已使用處理機(jī)的時間、其他資源的使用情況等。</p><p>  特點:可防止低優(yōu)先級的進(jìn)程/作業(yè)長時間得不到調(diào)度。</p><p> ?。ㄋ模┳罡唔憫?yīng)比優(yōu)先調(diào)度算法HRN:Highest Response Ratio Next。 </p&

24、gt;<p>  引入:實際上是一種動態(tài)優(yōu)先權(quán)調(diào)度算法。</p><p>  1.響應(yīng)比R = 響應(yīng)時間 / 要求服務(wù)時間</p><p>  =(等待時間 + 運(yùn)行時間)/ 運(yùn)行時間</p><p>  = 1 +(等待時間 / 運(yùn)行時間)</p><p>  2.基本思想:同時兼顧每個作業(yè)等待時間和運(yùn)行時間兩方面因素,選擇響

25、應(yīng)比最高的作業(yè)/進(jìn)程投入運(yùn)行。</p><p><b>  3.優(yōu)缺點。</b></p><p>  優(yōu)點:利于短作業(yè),利于長作業(yè)。</p><p><b>  缺點:系統(tǒng)開銷大。</b></p><p> ?。ㄎ澹┗跁r間片的輪調(diào)度算法(RR)</p><p>  1.基本

26、思想:輪轉(zhuǎn)法(Round Robin)是讓每個進(jìn)程在就緒隊列中的等待時間與享受服務(wù)的時間成正比例。</p><p>  2.時間片大小的確定:</p><p>  固定時間片 可變時間片</p><p>  系統(tǒng)響應(yīng)時間 正比</p><p>  就緒進(jìn)程個數(shù)

27、 反比 </p><p><b>  CPU能力</b></p><p>  進(jìn)程切換時間q時間片t 則q/t不大于某個值</p><p>  3.時間片t大小的選擇影響:</p><p>  太大,則——>FCFS;</p><p>  太小,則系統(tǒng)開銷增大(頻繁切換)。&l

28、t;/p><p>  t = R / NmaxR為響應(yīng)時間,Nmax允許的最大就緒數(shù)。</p><p><b>  3)輸出模塊</b></p><p>  根據(jù)選擇的調(diào)度算法輸出進(jìn)程的響應(yīng)時間,結(jié)束時間,周轉(zhuǎn)時間,平均周轉(zhuǎn)時間,采用可視化界面,可在進(jìn)程調(diào)度過程中隨時暫停調(diào)度,查看當(dāng)前進(jìn)程的狀態(tài)以及相應(yīng)的阻塞隊列。</p><

29、p>  3.2.4數(shù)據(jù)結(jié)構(gòu)說明</p><p><b>  ADT說明:</b></p><p>  ADT ADT-Name</p><p>  {    Data://數(shù)據(jù)說明    數(shù)據(jù)元素之間邏輯關(guān)系的描述    Operat

30、ions://操作說明     Operation1://操作1,它通??捎肅或C﹢﹢的函數(shù)原型來描述     Input:對輸入數(shù)據(jù)的說明     Preconditions:執(zhí)行本操作前系統(tǒng)應(yīng)滿足的狀態(tài)//可看作初始條件     

31、;Process:對數(shù)據(jù)執(zhí)行的操作     Output:對返回數(shù)據(jù)的說明     Postconditions:執(zhí)行本操作后系統(tǒng)的狀態(tài)//"系統(tǒng)"可看作某個數(shù)據(jù)結(jié)構(gòu)</p><p>  Operation2://操作2    ……  }//ADT

32、 </p><p><b>  程序類圖:</b></p><p>  圖3-3 程序類圖</p><p>  3.2.5算法流程圖</p><p>  處理器調(diào)度程序活動圖:在采用多道程序設(shè)計的系統(tǒng)中,往往有若干個進(jìn)程同時處于就緒狀態(tài)。當(dāng)就緒狀態(tài)進(jìn)程個數(shù)大于處理器數(shù)時,就必須依照某種策略來決定哪些進(jìn)程優(yōu)先占

33、用處理器。本實驗?zāi)M在單處理器情況下處理器調(diào)度,幫助學(xué)生加深了解處理器調(diào)度的工作。</p><p>  圖3-4 處理器調(diào)度程序活動圖</p><p>  1.先來先服務(wù):調(diào)度算法 (FCFS:First Come First Serve)。</p><p>  圖3-5 先到先服務(wù)算法活動圖</p><p>  2.短作業(yè)(進(jìn)程)優(yōu)先調(diào)

34、度算法(SJF:Shortest Job First)。</p><p>  圖3-6 最短作業(yè)優(yōu)先算法活動圖</p><p>  3.高優(yōu)先權(quán)優(yōu)先調(diào)度算法(HPF:Highest Priority First)。 </p><p>  圖3-7 優(yōu)先調(diào)度算法活動圖</p><p>  4.最高響應(yīng)比優(yōu)先調(diào)度算法(HRN:Highest

35、 Response Ratio Next)。 </p><p>  圖3-8 最高響應(yīng)比調(diào)度算法活動圖</p><p>  5.基于時間片的輪調(diào)度算法(RR)。</p><p>  圖3-9 時間片輪轉(zhuǎn)法算法活動圖</p><p>  四、系統(tǒng)測試與調(diào)試分析</p><p><b>  4.1 系統(tǒng)測試

36、</b></p><p><b>  4.1.1輸入模塊</b></p><p>  (1)實現(xiàn)在界面上直接手動輸入。</p><p> ?。?)實現(xiàn)在文件中直接讀取。</p><p><b>  4.1.2算法模塊</b></p><p>  實現(xiàn)可以在界面上選

37、擇需要的算法(時間片輪轉(zhuǎn)算法、先來先服務(wù)算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權(quán)優(yōu)先調(diào)度算法、高響應(yīng)比調(diào)度算法)運(yùn)行。</p><p><b>  4.1.3輸出模塊</b></p><p>  可以根據(jù)選擇的算法,得到正確的輸出結(jié)果。</p><p><b>  4.2測試用例</b></p><p> 

38、 表4-1 測試用例表</p><p><b>  4.3測試結(jié)果</b></p><p>  4.3.1先到先服務(wù)算法</p><p>  圖4-1 先到先服務(wù)算法測試結(jié)果</p><p>  4.3.2最短作業(yè)優(yōu)先算法</p><p>  圖4-2 最短作業(yè)優(yōu)先算法測試結(jié)果</p&

39、gt;<p>  4.3.3靜態(tài)優(yōu)先級算法</p><p>  圖4-3 優(yōu)先級算法測試結(jié)果</p><p>  4.3.4最高響應(yīng)比算法</p><p>  圖4-4 最高響應(yīng)比算法測試結(jié)果</p><p>  4.3.5時間片輪轉(zhuǎn)法</p><p>  圖4-5 時間片輪轉(zhuǎn)法測試結(jié)果</p

40、><p>  4.4手動運(yùn)算結(jié)果對比</p><p>  4.4.1靜態(tài)優(yōu)先級</p><p>  P1 p3 p4 p5 p2 </p><p>  0 7 10 15 19 20</p><p>  4.4.2先來先服務(wù)&

41、lt;/p><p>  P1 p2p3 p4 p5</p><p>  0 7 8 11 16 20</p><p>  4.4.3最短作業(yè)優(yōu)先</p><p>  P1 p2 p3 p5 p4</p><p&g

42、t;  0 7 8 11 15 20 </p><p>  4.4.4最高響應(yīng)比</p><p>  P1 p2 p3 p4 p5</p><p>  0 7 8 11 16 20</p><p> 

43、 4.4.5時間片算法</p><p>  P1 p2 p3 p4 p1 p5 p4 p1 p5 </p><p>  0 3 4 7 10 13 16 18 19 20 </p><p>  圖4-6 手動計算截圖1</p><p>  圖4-7 手動計算截圖2</p>

44、;<p><b>  4.5測試</b></p><p><b>  表4-2 測試表</b></p><p><b>  4.6 調(diào)試分析</b></p><p>  在我們組程序功能已經(jīng)基本實現(xiàn)并且正常的情況之后,現(xiàn)在主要完成數(shù)據(jù)的測試,在測試過程中,主要針對老師給的數(shù)據(jù),我先手動

45、的分別對五種算法算出答案,再分別讀入程序運(yùn)行,與手動算出的結(jié)果進(jìn)行反復(fù)對比,在測試中我們發(fā)現(xiàn)了時間片輪轉(zhuǎn)法的算法有點小小的問題,與預(yù)期的結(jié)果不符合,在進(jìn)行了反復(fù)調(diào)試之后得到了正確的結(jié)果,程序正確。</p><p><b>  用戶手冊</b></p><p><b>  1.導(dǎo)入文件包</b></p><p>  圖4-8

46、 讀入程序包</p><p>  2.運(yùn)行讀入數(shù)據(jù)(手動輸入或者文件讀?。?lt;/p><p>  圖4-9 讀入數(shù)據(jù)</p><p>  3.選擇調(diào)度算法點擊Start開始運(yùn)行,可以點擊pause來暫停,點擊甘特圖可以查看進(jìn)程甘特圖</p><p>  圖4-10 算法選擇</p><p><b>  4

47、.輸出結(jié)果</b></p><p>  圖4-11 結(jié)果輸出</p><p><b>  六、程序清單</b></p><p><b>  FCFS.java</b></p><p>  package lab1;</p><p>  import java.u

48、til.Vector;</p><p>  public class FCFS extends DispatchMethod{</p><p><b>  @Override</b></p><p>  public PCB getNext(Vector<PCB> q) {</p><p>  // TODO

49、 Auto-generated method stub</p><p><b>  PCB p;</b></p><p>  if(q.size()>0)</p><p>  p=q.remove(0);</p><p><b>  else</b></p><p>&

50、lt;b>  p=null;</b></p><p><b>  return p;</b></p><p><b>  }</b></p><p><b>  @Override</b></p><p>  public int handle(PCB p,V

51、ector<PCB> q) {</p><p>  // TODO Auto-generated method stub</p><p>  int time=p.getServeTime();</p><p><b>  try {</b></p><p>  Thread.sleep(time*1000)

52、;</p><p>  System.out.println("sleep for "+time);</p><p>  } catch (InterruptedException e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printStac

53、kTrace();</p><p><b>  }</b></p><p>  p.setTime(p.getEnterTime(),0,p.getPriority());</p><p>  return time;</p><p><b>  }</b></p><p>

54、<b>  }</b></p><p><b>  SJF.java</b></p><p>  package lab1;</p><p>  import java.util.Vector;</p><p>  public class SJF extends DispatchMethod{&l

55、t;/p><p><b>  @Override</b></p><p>  public PCB getNext(Vector<PCB> q) {</p><p>  // TODO Auto-generated method stub</p><p>  if(q.size()==0)</p>

56、<p>  return null;</p><p>  int min=0;</p><p>  for(int i=0;i<q.size();i++){</p><p>  if(q.get(i).getServeTime()<q.get(min).getServeTime())</p><p><b> 

57、 min=i;</b></p><p><b>  }</b></p><p>  PCB temp=q.remove(min);</p><p>  return temp;</p><p><b>  }</b></p><p><b>  @Ove

58、rride</b></p><p>  public int handle(PCB p,Vector<PCB> q) {</p><p>  // TODO Auto-generated method stub</p><p>  int time=p.getServeTime();</p><p><b>

59、  try {</b></p><p>  Thread.sleep(time*1000);</p><p>  } catch (InterruptedException e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printStackTrace()

60、;</p><p><b>  }</b></p><p>  p.setTime(p.getEnterTime(),0,p.getPriority());</p><p>  return time;</p><p><b>  }</b></p><p><b>

61、;  }</b></p><p>  StaticPriority.java</p><p>  package lab1;</p><p>  import java.util.Vector;</p><p>  public class StaticPriority extends DispatchMethod{</p&

62、gt;<p><b>  @Override</b></p><p>  public PCB getNext(Vector<PCB> q) {</p><p>  // TODO Auto-generated method stub</p><p><b>  PCB p;</b></p&

63、gt;<p>  if(q.size()==0)</p><p><b>  p=null;</b></p><p><b>  else{</b></p><p>  int max=0;</p><p>  for(int i=0;i<q.size();i++){</p

64、><p>  if(q.get(i).getPriority()>q.get(max).getPriority())</p><p><b>  max=i;</b></p><p><b>  }</b></p><p>  System.out.println("max: "

65、;+max);</p><p>  p=q.get(max);</p><p>  q.remove(max);</p><p><b>  }</b></p><p><b>  return p;</b></p><p><b>  }</b><

66、;/p><p><b>  @Override</b></p><p>  public int handle(PCB p,Vector<PCB> q) {</p><p>  // TODO Auto-generated method stub</p><p>  int time=p.getServeTime

67、();</p><p><b>  try {</b></p><p>  Thread.sleep(time*1000);</p><p>  } catch (InterruptedException e) {</p><p>  // TODO Auto-generated catch block</p>

68、;<p>  e.printStackTrace();</p><p><b>  }</b></p><p>  p.setTime(p.getEnterTime(),0,p.getPriority());</p><p>  return time;</p><p><b>  }</b

69、></p><p><b>  }</b></p><p><b>  HRRF.java</b></p><p>  package lab1;</p><p>  import java.util.Vector;</p><p>  public class HRR

70、F extends DispatchMethod{</p><p>  public void calculate(Vector<PCB> q){</p><p>  for(int i=0;i<q.size();i++){</p><p>  PCB temp=q.get(i);</p><p>  temp.setPri

71、ority((this.getTime()-temp.getEnterTime()+0.0)/temp.getServeTime()+1);</p><p>  System.out.println("time: "+this.getTime()+" calculate priority:"+((double)(this.getTime()-temp.getEnterTi

72、me()+0.0)/temp.getServeTime()+1));</p><p>  temp.refresh();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  @Override</b></p>

73、<p>  public PCB getNext(Vector<PCB> q) {</p><p>  calculate(q);</p><p>  // TODO Auto-generated method stub</p><p>  if(q.size()==0)</p><p>  return null;&

74、lt;/p><p>  int max=0;</p><p>  for(int i=0;i<q.size();i++){</p><p>  if(q.get(i).getPriority()>q.get(max).getPriority())</p><p><b>  max=i;</b></p>

75、;<p><b>  }</b></p><p>  PCB temp=q.get(max);</p><p>  q.remove(max);</p><p>  return temp;</p><p><b>  }</b></p><p><b&g

76、t;  @Override</b></p><p>  public int handle(PCB p,Vector<PCB> q) {</p><p>  // TODO Auto-generated method stub</p><p>  int time=p.getServeTime();</p><p>&

77、lt;b>  try {</b></p><p>  Thread.sleep(time*1000);</p><p>  } catch (InterruptedException e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printStac

78、kTrace();</p><p><b>  }</b></p><p>  p.setTime(p.getEnterTime(),0,p.getPriority());</p><p>  return time;</p><p><b>  }</b></p><p>

79、<b>  }</b></p><p><b>  Timeslice</b></p><p>  package lab1;</p><p>  import java.util.Vector;</p><p>  public class TimeSlice extends DispatchMe

80、thod{</p><p>  int slice=1;</p><p>  public TimeSlice(){</p><p>  this.needConfig=true;</p><p><b>  }</b></p><p>  void setSlice(int slice){<

81、;/p><p>  this.slice=slice;</p><p><b>  }</b></p><p><b>  @Override</b></p><p>  public PCB getNext(Vector<PCB> q) {</p><p>  //

82、 TODO Auto-generated method stub</p><p><b>  PCB p;</b></p><p>  if(q.size()>0)</p><p>  p=q.remove(0);</p><p><b>  else</b></p><p

83、><b>  p=null;</b></p><p><b>  return p;</b></p><p><b>  }</b></p><p>  public void setConfig(Object o){</p><p>  this.slice=((Mai

84、nUI)o).getSlice();</p><p><b>  }</b></p><p><b>  @Override</b></p><p>  public int handle(PCB p,Vector<PCB> q) {</p><p>  // TODO Auto-gen

85、erated method stub</p><p><b>  try {</b></p><p>  Thread.sleep(slice);</p><p>  } catch (InterruptedException e) {</p><p>  // TODO Auto-generated catch blo

86、ck</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p>  if(p.getServeTime()-slice>0){</p><p><b>  try {</b></p><p>  Thread.

87、sleep(slice*1000);</p><p>  } catch (InterruptedException e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printStackTrace();</p><p><b>  }</b>&l

88、t;/p><p>  p.setTime(p.getEnterTime(), p.getServeTime()-slice,p.getPriority());</p><p>  q.addElement(p);</p><p>  return slice;</p><p><b>  }</b></p>&

89、lt;p><b>  else{</b></p><p><b>  try {</b></p><p>  Thread.sleep(p.getServeTime()*1000);</p><p>  } catch (InterruptedException e) {</p><p>  

90、// TODO Auto-generated catch block</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p>  int time=p.getServeTime();</p><p>  p.setTime(p.getEnterTime(),0

91、,p.getPriority());</p><p>  return time;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  七、體會與自

92、我評價</b></p><p>  在這次課程設(shè)計中,黃強(qiáng)主要負(fù)責(zé)文檔的編寫,和講解PPT的制作,包括前期的設(shè)計文檔和PPT,后期的總結(jié)報告,還有就是系統(tǒng)的測試工作,,朱文喆負(fù)責(zé)系統(tǒng)的設(shè)計和代碼的實現(xiàn)部分,在深入地進(jìn)行程序的設(shè)計和,編寫工作,我對這個學(xué)期中學(xué)習(xí)的設(shè)計模式有了新的認(rèn)識,在本次的程序設(shè)計當(dāng)中,我們應(yīng)用了MVC【Model View Controller】(模型-視圖-控制器)的設(shè)計模式,實

93、現(xiàn)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個部件里面,在改進(jìn)和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯。MVC被獨特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結(jié)構(gòu)中。</p><p>  MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器)設(shè)計創(chuàng)建 Web 應(yīng)用程序的模式:</p><p>

94、;  Model(模型)表示應(yīng)用程序核心(比如數(shù)據(jù)庫記錄列表)。</p><p>  View(視圖)顯示數(shù)據(jù)(數(shù)據(jù)庫記錄)。</p><p>  Controller(控制器)處理輸入(寫入數(shù)據(jù)庫記錄)。</p><p>  MVC 模式同時提供了對 HTML、CSS 和 JavaScript 的完全控制。</p><p>  Model(

95、模型)是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。</p><p>  通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)。</p><p>  View(視圖)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分。</p><p>  通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。</p><p>  Controller(控制器)是應(yīng)用程序中處理用戶交互的部分。</p><

96、;p>  通??刂破髫?fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。</p><p>  MVC 分層有助于管理復(fù)雜的應(yīng)用程序,因為您可以在一個時間內(nèi)專門關(guān)注一個方面。例如,您可以在不依賴業(yè)務(wù)邏輯的情況下專注于視圖設(shè)計。同時也讓應(yīng)用程序的測試更加容易。</p><p>  MVC 分層同時也簡化了分組開發(fā)。不同的開發(fā)人員可同時開發(fā)視圖、控制器邏輯和業(yè)務(wù)邏輯。</p>

97、<p>  加深了對MVC設(shè)計模式的理解,對Java語言更加熟悉了,這是技術(shù)層面的事情,在文檔編寫方面我也學(xué)到了很多東西,比如如何讓文檔設(shè)計得更加正式,美觀,對word的操作也更加熟練了。</p><p>  通過本次模擬CPU調(diào)度算法,加深了我對操作系統(tǒng)的理解和認(rèn)識,更加熟悉了調(diào)度算法和操作系統(tǒng)的功能結(jié)構(gòu),對以后深入學(xué)習(xí)計算機(jī)我相信會有很大的幫助。</p><p><b

98、>  八、參考文獻(xiàn)</b></p><p>  [1](美)西爾伯查茨,(美)高爾文,(美)加根 著 譯者: 鄭扣根Operating System Concepts Seventh, Edition操作系統(tǒng)概念第七版(中文版).高等教育出版社.2010(01).</p><p>  [2] 杭誠方,談宏編.操作系統(tǒng)課程設(shè)計教程.上海交通大學(xué)出版社,2008.&

99、lt;/p><p>  [3](美)Bruce Eckel 著 譯者:陳昊鵬 Thinking in Java Java編程思想.機(jī)械工業(yè)出版社.01-2006-3149.</p><p>  [4]嚴(yán)蔚敏 吳偉明 著.數(shù)據(jù)結(jié)構(gòu)(C語言版).清華大學(xué)出版社.2007.</p><p>  [5](美)Clifford A.Shaffer 著.張銘 劉曉丹 等譯.數(shù)

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論