操作系統(tǒng)通用處理器調度演示程序課程設計總結報告_第1頁
操作系統(tǒng)通用處理器調度演示程序課程設計總結報告_第2頁
操作系統(tǒng)通用處理器調度演示程序課程設計總結報告_第3頁
操作系統(tǒng)通用處理器調度演示程序課程設計總結報告_第4頁
操作系統(tǒng)通用處理器調度演示程序課程設計總結報告_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、題目:通用處理器調度演示實驗專業(yè):軟件工程班級:軟件3班、軟件4班姓名:朱文吉吉、黃強學號:201426010306、201426010421設計時間:2017/6/26-2017/7/7一、課程設計目的操作系統(tǒng)課程設計是軟件工程專業(yè)的主要實踐性教學環(huán)節(jié)。在進行了專業(yè)基礎課和操作系統(tǒng)課程的學習基礎上,設計或分析一個實際的操作系統(tǒng)旨在加深對計算機硬件結構和系統(tǒng)軟件的認識,初步掌握操作系統(tǒng)組成模塊和應用接口的使用方法,提高進行工程設計和系統(tǒng)分析的能力,為畢業(yè)設計和以后的工程實踐打下良好的基礎。二、課程設計內容與要求2.1 設計目的在多道程序和多任務系統(tǒng)中,系統(tǒng)內同時處于就緒狀態(tài)的進程可能有若干個,

2、也就是能運行的進程數大于處理機個數,為了使系統(tǒng)中的進程有條不紊地工作,必須選用某種調度策略,在一定的時機選擇一個進程占有處理機。要求學生設計一個模擬處理機調度算法,以鞏固和加深處理機調度的概念。2.2 設計要求(多道、單處理機)1)進程調度算法包括:時間片輪轉算法、先來先服務算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權優(yōu)先調度算法、高響應比調度算法。2)每一個進程有一個PCB,其內容可以根據具體情況設定。3)進程數、進入內存時間、要求服務時間、作業(yè)大小、優(yōu)先級等均可以在界面上設定。4)可讀取樣例數據(要求存放在外部文件中)進行進程數、進入內存時間、時間片長度、作業(yè)大小、進程優(yōu)先級的初始化。5)可以在運行中

3、顯示各進程的狀態(tài):就緒、執(zhí)行(由于不要求設置互斥資源與進程間同步關系,故只有兩種狀態(tài))。6)采用可視化界面,可在進程調度過程中隨時暫停調度,查看當前進程的狀態(tài)以及相應的阻塞隊列。7)有能比較的功能,可比較同一組數據在不同調度算法下的平均周轉時間。8)具有一定的數據容錯性。三、功能模擬系統(tǒng)分析與設計3.1 系統(tǒng)分析本課程設計的目的就是模擬一種通用處理器的五種調度算法來實現進程調度的過程,加深對進程調度的理解,輸出采用采用可視化界面,可在進程調度過程中隨時暫停調度,查看當前進程的狀態(tài)以及相應的阻塞隊列,進程控制塊(PCB)是這個程序設計的核心,PCB包含了到達時間,運行時間,優(yōu)先級等關鍵數據,要求

4、可以用五種調度算法演示,我們可以用策略模式把五個算法打包通過一個接口連接CPU,實現算法和CPU的分離,算法有5五種,分別實現不同的調度演示(時間片輪轉算法、先來先服務算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權優(yōu)先調度算法、高響應比調度算法)我們采用MVC(模型-視圖-控制器)的設計方法,輸入方式的采用界面直接輸入和文件讀取輸入兩種方法,視圖主要展示進程的進程名、到達時間、運行時間、優(yōu)先級、時間片、響應時間、結束時間、周轉時間,表示方法我們采用Jav豳形界面輸出,動態(tài)演示調度算法的實現過程,以加深對操作系統(tǒng)進程調度的理解。3.2 系統(tǒng)設計3.2.1 設計思想就先教心地場修整區(qū)一指示同孑優(yōu)雷迸程的戰(zhàn)甌&#

5、39;其他工EbJ送貨化翱庫的蒼耳丙容圖3-1進程控制塊(PCB)1、每個進程有一個進程控制塊(PCB)表示。進程控制塊可以包含如下信息:進程名、優(yōu)先級數、到達時間、需要運行時間等等。2、進程的信息,包括到達時間,優(yōu)先數及需要的運行時間等都是事先人為地指定。3、每個進程的狀態(tài)可以是就緒W(Wait)運行R(Run)、或完成F(Finish)三種狀態(tài)之一。3.2.2 算法分析(一)先來先服務調度算法FCFS:FirstComeFirstServe總是把當前處于就緒隊列之首的那個進程調度到運行狀態(tài)。也就說,它只考慮進程進入就緒隊列的先后,而不考慮它的下一個CPU周期的長短及其他因素。FCFS算法簡

6、單易行,但性能卻不大好。(二)最短短作業(yè)(進程)優(yōu)先調度算法SJF:ShortestJobFirst。稱為“短進程優(yōu)先"SPN(ShortestProcessNext);這是對FCFS算法的改進,其目標是減少平均周轉時間。(三)高優(yōu)先權優(yōu)先調度算法HPF:HighestPriorityFirst。多級隊列算法的改進,平衡各進程對響應時間的要求。適用于作業(yè)調度和進程調度,可分成搶先式和非搶先式。(四)最高響應比優(yōu)先調度算法HRN:HighestResponseRatioNext最高響應比優(yōu)先法(HRN,HighestResponse_ratioNex恥對FCFS方式和SJF方式的一種綜

7、合平衡。FCFS方式只考慮每個作業(yè)的等待時間而未考慮執(zhí)行時間的長短,而SJF方式只考慮執(zhí)行時間而未考慮等待時間的長短。因此,這兩種調度算法在某些極端情況下會帶來某些不便。HRN調度策略同時考慮每個作業(yè)的等待時間長短和估計需要的執(zhí)行時間長短,從中選出響應比最高的作業(yè)投入執(zhí)行。(五)基于時間片的輪調度算法(RR)。將系統(tǒng)中所有的就緒進程按照FCFS原則,排成一個隊列。每次調度時將CPU分派給隊首進程,讓其執(zhí)行一個時間片。時間片的長度從幾個ms到幾百ms。在一個時間片結束時,發(fā)生時鐘中斷。調度程序據此暫停當前進程的執(zhí)行,將其送到就緒隊列的末尾,并通過上下文切換執(zhí)行當前的隊首進程。進程可以未使用完一個

8、時問片,就出讓CPU(如阻塞)。3.2.3 模塊設計1)輸入模塊能夠滿足輸入進程基本信息的功能,盡可能提供友好的交互界面。給用戶很好的提示,使用戶能夠方便的操作。可讀取樣例數據(要求存放在外部文件中)進行進程數、進入內存時間、時間片長度、作業(yè)大小、進程優(yōu)先級的初始化。2)算法模塊可以根據需求選擇五種算法中的一種運行:(一)先來先服務調度算法FCFS:FirstComeFirstServa1 .基本思想:按作業(yè)(進程)到達時間先后順序依次使用CPU。2 .適用于作業(yè)/進程調度。3 .非搶占調度方式。4 .優(yōu)缺點。優(yōu)點:實現簡單。缺點:未考慮進程的優(yōu)先級或緊急性,不利于短作業(yè)(進程)的運行,利于C

9、PU繁忙型作業(yè),而不利于I/O繁忙型作業(yè)。很少單獨使用,常與其他算法結合使用(輔助算法)。(二)短作業(yè)(進程)優(yōu)先調度算法SJF:ShortestJobFirst1 .基本思想:選擇就緒(后備)隊列中估計運行時間最短的進程(作業(yè))投入運行。2 .適用于作業(yè)/進程調度。3 .非搶占調度方式一一最短剩余時間優(yōu)先算法或搶占調度方式。4 .優(yōu)缺點。優(yōu)點:有效縮短作業(yè)的平均周轉時間,從而提高系統(tǒng)吞吐量。缺點:不利于長作業(yè)和緊迫作業(yè)的運行(無法滿足公平性,估計有主觀性)(三)高優(yōu)先權優(yōu)先調度算法HPF:HighestPriorityFirst。引入:為照顧緊迫型作業(yè)優(yōu)先處理,急事急辦”,重要事先辦”。1

10、.基本思想:選擇優(yōu)先級最高的進程或作業(yè)投入運行。2 .適用于作業(yè)/進程調度。3 .調度方式。非搶占調度方式一一批處理系統(tǒng):等你打完我再打”。搶占調度方式一一實時系統(tǒng):不等你打完電話,搶過話筒就打4 .優(yōu)先權(優(yōu)先級):即優(yōu)先數,是由系統(tǒng)或用戶按某種原則指定的,一般用整數表示。(1)靜態(tài)優(yōu)先權幺定終身”是在創(chuàng)建進程/作業(yè)時確定的,且在整個運行期間保持不變。優(yōu)先級的確定依據:用戶要求、進程/作業(yè)類型、對資源的要求不同系統(tǒng)有不同的確定原則,及表求方法。優(yōu)點:簡單易行,系統(tǒng)開銷小。缺點:不夠精確,可能出現某些低優(yōu)先級的進程永不能被執(zhí)行。(2)動態(tài)優(yōu)先權是在創(chuàng)建進程/作業(yè)時賦予的優(yōu)先級,可隨著進程的推進

11、而改變。決定/動態(tài)改變因素:等待時間、已使用處理機的時間、其他資源的使用情況等。特點:可防止低優(yōu)先級的進程/作業(yè)長時間得不到調度。(四)最高響應比優(yōu)先調度算法HRN:HighestResponseRatioNext引入:實際上是一種動態(tài)優(yōu)先權調度算法。1 .響應比R=響應時間/要求服務時間=(等待時間+運行時間)/運行時間=1+(等待時間/運行時間)2 .基本思想:同時兼顧每個作業(yè)等待時間和運行時間兩方面因素,選擇響應比最高的作業(yè)/進程投入運行。3,優(yōu)缺點。優(yōu)點:利于短作業(yè),利于長作業(yè)。缺點:系統(tǒng)開銷大。(五)基于時間片的輪調度算法(RR)1 .基本思想:輪轉法(RoundRobin)是讓每個

12、進程在就緒隊列中的等待時間與享受服務的時間成正比例。2 .時間片大小的確定:固定時間片可變時間片系統(tǒng)響應時間正比就緒進程個數反比CPU能力進程切換時間q時間片t則q/t不大于某個值3 .時間片t大小的選擇影響:太大,M>FCFS;太小,則系統(tǒng)開銷增大(頻繁切換)。t=R/NmaxR為響應時間,Nmax允許的最大就緒數。3)輸出模塊根據選擇的調度算法輸出進程的響應時間,結束時間,周轉時間,平均周轉時問,采用可視化界面,可在進程調度過程中隨時暫停調度,查看當前進程的狀態(tài)以及相應的阻塞隊列。3.2.4 數據結構說明ADT說明:ADTADT-Name(Data:/數據說明數據元素之間邏輯關系的描

13、述Operations:/腴作說明Operationl:/臊作1,它通??捎肅或C十十的函數原型來描述Input:對輸入數據的說明Preconditions執(zhí)行本操作前系統(tǒng)應滿足的狀態(tài)/可看作初始條件Process對數據執(zhí)行的操作Output對返回數據的說明Postconditions執(zhí)行本操作后系統(tǒng)的狀態(tài)/"系統(tǒng)”可看作某個數據結構Operation2:/臊作2/ADT程序類圖:圖3-3程序類圖3.2.5 算法流程圖處理器調度程序活動圖:在采用多道程序設計的系統(tǒng)中,往往有若干個進程同時處于就緒狀態(tài)。當就緒狀態(tài)進程個數大于處理器數時,就必須依照某種策略來決定哪些進程優(yōu)先占用處理器。本

14、實驗模擬在單處理器情況下處理器調度,幫助學生加深了解處理器調度的工作。圖3-4處理器調度程序活動圖1.先來先服務:調度算法(FCFS:FirstComeFirstServe'圖3-5先到先服務算法活動圖2 .短作業(yè)(進程)優(yōu)先調度算法(SJF:ShortestJobFirst圖3-6最短作業(yè)優(yōu)先算法活動圖3 .高優(yōu)先權優(yōu)先調度算法(HPF:HighestPriorityFirst)圖3-7優(yōu)先調度算法活動圖4.最高響應比優(yōu)先調度算法(HRN:HighestResponseRatioNext圖3-8最高響應比調度算法活動圖5.基于時間片的輪調度算法(RR)。圖3-9時間片輪轉法算法活動圖

15、四、系統(tǒng)測試與調試分析4.1 系統(tǒng)測試4.1.1 輸入模塊(1)實現在界面上直接手動輸入。(2)實現在文件中直接讀取。4.1.2 算法模塊實現可以在界面上選擇需要的算法(時間片輪轉算法、先來先服務算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權優(yōu)先調度算法、高響應比調度算法)運行。4.1.3 輸出模塊可以根據選擇的算法,得到正確的輸出結果4.2 測試用例表4-1測試用例表進程名到達時間運行時間優(yōu)先級時間片P11°553P21113P31433P4I?333P542234.3 測試結果4.3.1 先到先服務算法圖4-1先到先服務算法測試結果4.3.2 最短作業(yè)優(yōu)先算法圖4-2最短作業(yè)優(yōu)先算法測試結果4

16、.3.3靜態(tài)優(yōu)先級算法圖4-3優(yōu)先級算法測試結果4.3.4最高響應比算法圖4-4最高響應比算法測試結果圖4-5時間片輪轉法測試結果4.4手動運算結果對比4.4.1 靜態(tài)優(yōu)先級P1p3p4p5p27101519204.4.2 先來先服務P1,p2p3p4p5078111620P14.4.3 最短作業(yè)優(yōu)先p2p3p5.p4781115204.4.4 最高響應比4.4.5時間片算法P1p2p3P4plp5p4plp50347101316181920圖4-6手動計算截圖1圖4-7手動計算截圖24.5測試表4-2測試表測試說測試名稱通用處理器調度演示實驗測試目的驗證程序對于模擬處理器調度算法的處理流程明

17、測試技術單元測試測試方法黑盒測試法測試內容讀取數據-程序運行-輸出結果測試用例測試步驟輸入讀取數據文件的路徑名分別選擇不同的調度算法運行輸出結果測試數據src/data.txt時間片輪轉算法、先來先服務算法、短作業(yè)優(yōu)先算法、靜態(tài)優(yōu)先權優(yōu)先調度算法、高響應比調度算法進程名行時間片P10到達時間運優(yōu)先級時間753P21113P31343P42533P54423預期結果正常讀入數據算法正常運行輸出響應時間、結束時間、平均周轉時間測試結果與預期相符與預期相符與預期相符4.6調試分析在我們組程序功能已經基本實現并且正常的情況之后,現在主要完成數據的測試,在測試過程中,主要針對老師給的數據,我先手動的分別

18、對五種算法算出答案,再分別讀入程序運行,與手動算出的結果進行反復對比,在測試中我們發(fā)現了時間片輪轉法的算法有點小小的問題,與預期的結果不符合,在進行了反復調試之后得到了正確的結果,程序正確。五、用戶手冊1.導入文件包.云二翼,:IL;',-7盛直t&fl?圖4-8讀入程序包2 .運行讀入數據(手動輸入或者文件讀?。﹫D4-9讀入數據3 .選擇調度算法點擊Start開始運行,可以點擊pause來暫停,點擊甘特圖可以查看進程甘特圖逗程號遞入內行時間當前優(yōu)秀筑響應時間結算時間a1075.02plpl1.03FT34.04252.05442.06345.07563.0g2140g146.

19、010346.011321.0123450I時初總輪轉Istartpaiisg11甘相肉時間竟:1時間片輪轉先來光雕帶運行就錯三帝ri高響應比場理優(yōu)先靜叁優(yōu)先鎰圖4-10算法選擇4 .輸出結果圖4-11結果輸出六、程序清單FCFS.javapackagelabl;importjava.util.Vector;publicclassFCFSextendsDispatchMethodOverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;p=q.remove(0);elsep=null;return

20、p;)Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);Systemout.println("sleepfor"+time);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();re

21、turntime;SJF.javapackagelab1;importjava.util.Vector;publicclassSJFextendsDispatchMethodOverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubif(q.size()=0)returnnull;intmin=0;for(inti=0;i<q.size();i+)if(q.get(i).getServeTime()<q.get(min).getServeTime()min=i;PCBtemp=q.remove(

22、min);returntemp;Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;StaticPriority.javapack

23、agelabl;importjava.util.Vector;publicclasStaticPrioAtyextendsDispatchMethodOverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;if(q.size()=0)p=null;elsWintmax=0;for(inti=0;i<q.size();i+)if(q.get(i).getPriority()>q.get(max).getPriority()max=i;)Systemout.println("m

24、ax:"+max);p=q.get(max);q.remove(max);)returnp;Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),0,p.getPriority()

25、;returntime;HRRF.javapackagelab1;importjava.util.Vector;publicclassHRRFextendsDispatchMethodpublicvoidcalculate(Vector<PCB>q)for(inti=0;i<q.size();i+)PCBtemp=q.get(i);temp.setPriority(this.getTime()-temp.getEnterTime()+0.0)/temp.getServeTime()+1);Systemout.println("time:"+this.get

26、Time()+"calculatepriority:"+(double)(this.getTime()-temp.getEnterTime()+0.0)/temp.getServeTime()+1);temp.refresh();OverridepublicPCBgetNext(Vector<PCB>q)calculate(q);/TODOAuto-generatedmethodstubif(q.size()=0)returnnull;intmax=0;for(inti=0;i<q.size();i+)if(q.get(i).getPriority()&g

27、t;q.get(max).getPriority()max=i;PCBtemp=q.get(max);q.remove(max);returntemp;Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubinttime=p.getServeTime();tryThreadsleep(time*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnte

28、rTime(),0,p.getPriority();returntime;Timeslicepackagelab1;importjava.util.Vector;publicclassTimeSliceextendsDispatchMethodintslice=1;publicTimeSlice()this.needConfig=true;voidsetSlice(intslice)this.slice=slice;OverridepublicPCBgetNext(Vector<PCB>q)/TODOAuto-generatedmethodstubPCBp;p=q.remove(0

29、);elsep=null;returnp;)publicvoidsetConfig(Objecto)this.slice=(MainUI)o).getSlice();)Overridepublicinthandle(PCBp,Vector<PCB>q)/TODOAuto-generatedmethodstubtryThread.sleep(slice);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();if(p.getServeTime()-slice>0)tryThrea

30、dsleep(slice*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();p.setTime(p.getEnterTime(),p.getServeTime()slice,p.getPriority();q.addElement(p);returnslice;)elsWtry(Threadsleep(p.getServeTime()*1000);catch(InterruptedExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();inttime=p.getServeTime();p.setTime(p.getEnterTime(),0,p.getPriority();returntime;七、體會與自我評價在這次課程設計中,黃強主要負責文檔的編寫,和講解PPT的制作,包括前期的設計文檔和PPT,后期的總結報告,還有就是系統(tǒng)的測試工作,朱文吉吉負責系統(tǒng)的設計和代碼的實現部分,在深入地進行程序的設計和,編寫工作,我對這個學期中學習的設計模式有了新的認識,在本次的程序設計當中,我們應用了MVCModelViewController(模型-視圖-控制器

溫馨提示

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

評論

0/150

提交評論