資源描述:
《課程設計:處理機調度算法的實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、摘要處理機調度基本概念、調度算法優(yōu)劣的評價準則、多種處理機調度算法的介紹引言操作系統(tǒng)是處理計算機硬件的一層軟件和作為計算機用戶與計算機硬件的中間的協(xié)調者。操作系統(tǒng)的CPU調度器負責給各個任務分發(fā)CPU帶寬資源。調度算法負貴管理當前執(zhí)行任務等額順序和性能。目錄1.碰32.課程設計任務及要求42.1沒計任務42.2設計要求42.3任務分工43.1算法的總體思想53.2動態(tài)優(yōu)先級模塊83.2.1功能83.2.2算法83.3時間片輪轉模塊103.3.1功能103.3.2算法103.4短作業(yè)優(yōu)先模塊113.4.1功能113.4.2算法124.程序設計與實現(xiàn)
2、144.1程序代碼144.2實驗結果155.^1^184.收獲、體會和建議。191.概述在多道程序系統(tǒng)屮,調度的實質是一種資源分配,處理機調度是對處理機資源進行分配。處理機調度算法是指根據處理機分配策略所規(guī)定的處理機分配算法。在多道批處理系統(tǒng)中,一個作業(yè)從提交到獲取處理機執(zhí)行,直至作業(yè)運行完畢,4能需要經歷多級處理機調度,下面先來了解處理機調度的層次。1.課程設計任務及要求2.1設計任務在多道程序和多任務系統(tǒng)中,系統(tǒng)內同時處于就緒狀態(tài)的進程可能有若干個。也就是說能運行的進程數大于處理機個數。力了使系統(tǒng)屮的進程能育條不紊地工作,必須選用某種調度策略
3、,選擇一進程占用處理機。要求學生設計一個模擬處理機調度算法,以鞏固和加深處理機調度的概念。2.2設計要求1)先由用戶輸入進程數量(至少5個進程),再由系統(tǒng)隨機生成一個進程序列(包括到達時間和服務時間)。2)然后顯示進程調度算法由用戶選擇,包括:吋間片輪轉法,短作業(yè)優(yōu)先算法,動態(tài)優(yōu)先級算法。3)顯示結果包栝每個進程的開始時間、完成時間、周轉時間以及帶權周轉時間,顯示界面可參考書本的例子以表格形式但可不要表格線。2.3任務分工時間成員姓名任務完成情況第1天曾飛躍、廖曉丹功能分析完成曾飛躍、廖曉丹設計算法完成第2天曾飛躍、廖曉丹修改編碼完成曾飛躍、廖曉
4、丹測試功能,撰寫課程設計報告完成第3天曾飛躍、廖曉乃-撰寫課程設計報告,修改并完善完成3.算法及數據結構2.1算法的總體思想①動態(tài)優(yōu)先數調度算法:思想:為每一個進程沒一個優(yōu)先數,它總是把處理機給就緒隊列中具有最高優(yōu)先級的進程。初始的進程優(yōu)先數是隨機產生的,隨著進程的運行對優(yōu)先數進行調整,每次運行時都是從就緒隊列中選取優(yōu)先數最大的進程運行,所以將就緒隊列按照優(yōu)先數的大小從高到低排序,這樣,每次取對首進程即可。將進程按優(yōu)先數的大小排列在就緒隊列屮,每次選取就緒隊列中優(yōu)先權最尚的進程首先占用處理機。優(yōu)先數巾隨機函數產生進程最初的優(yōu)先數。優(yōu)先數的動態(tài)變化
5、:進程每執(zhí)行一次優(yōu)先數-1。優(yōu)先數隨著進程的執(zhí)行進行調整,每次執(zhí)行時都從就緒隊列中選収優(yōu)先數最大的進程投入運行。①吋間片輪轉調度算法:思想:將所有進程按照先來先服務的規(guī)則排成一個隊列,把CPU分配給就緒隊列的隊首進程,并規(guī)定它的執(zhí)行時間(稱此時間為時間片),當時間片用完但并未執(zhí)行結來時,剝奪該進程的執(zhí)行,將其鏈接到就緒隊列的隊尾,等待丁一次的選擇。將就緒隊列的隊首指針投入運行。②短作業(yè)優(yōu)先調度算法(不可剝奪式的)思想:根據估計運行時間的長短,將各個進程排成一個就緒隊列(估計運行時間最短的進程排在隊首),每次運行將隊首進程投入運行,直到運行結來,將
6、此進程連接到完成隊列的隊尾。然后,再將卜一個隊首進程投入運行,直到所有的進程都運行完畢。流程圖:結束短作業(yè)優(yōu)先動態(tài)優(yōu)先級吋間片輪轉調度數據結構:typedefstruct{//進程塊iniid;//進程名intreach;//到達時間floatservice;//服務吋間intprior;//優(yōu)先權intfinish;//完成時間floatturnover;//周轉時間floatcum」umover;//帶權周轉吋M}process;processp[20];intsort[20];//排序數組intwait[20];//等待隊列intn;int
7、alltime=O;//運行所需耍的總吋叫charc;in();為創(chuàng)建進程的函數:通過調用函數,輸入進程標志,動態(tài)生成進程的到達時間,服務時間,優(yōu)先權等,然后把進程存儲到隊列中,講進程按到達時間順序進行排序。Out()為進程調度輸出打印函數,選擇不同的調度方式按照不同的打印方式打印TimesliceO:吋間片輪轉法函數:函數將到達的進程放進等待隊列wait,通過岀隊比較來完成調度,講滿足調度的隊列計算周轉時間,和帶權周轉時間。Sjf()短作業(yè)優(yōu)先算法:該算法將到達的進程放進等待隊列里而,將等待隊列按進程服務時間從大到小進行排列,相同服務時間的按先
8、到達先處理方式排列,然后出隊,計算周轉時間Fpf()動態(tài)優(yōu)先級算法:該算法將到達的進程放進等待隊列里面,將等待隊列按進程優(yōu)先權從小到大進