




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、操作系統課程設計報告學校:廣州大學學院:計算機科學與教育軟件學院班級:計算機127 班課題:處理機調度程序任課老師:陶文正、陳文彬姓名:黃俊鵬學號:1200002111班內序號: 27成績:日期: 2015 年 1 月 6 日、設計目的在多道程序和多任務系統中, 系統內同時處于就緒狀態的進程可能有若干個。 也就是說能運行的進程數大于處理機個數。 為了使系統中的進程能有條不紊地工作, 必須選用某種調度策略, 選擇一進程占用處理機。 要求學生設計一個模擬處理機調度算法,以鞏固和加深處理機調度的概念。、設計要求1)進程調度算法包括:時間片輪轉法,短作業優先算法,動態優先級算法。2)可選擇進程數量3)
2、本程序包括三種算法,用C語言實現,執行時在主界面選擇算法(可用函數實現)(進程數,運行時間,優先數由隨機函數產生)執行,顯示結果。三、設計思路及算法思想1. 界面菜單選項一級菜單提供 2 個選項: 自動生成進程數量 手動輸入所需進程數量一級菜單選擇完畢后進入二級菜單: 重新生成進程 時間片輪轉法 短作業優先算法 動態優先級算法 退出程序2. 調度算法typedef st ruct char name; mt priority;“遇程名 "優先出 “達彳:時HimtrurinirtgTir e;intarriveTime;/智速時置1intbeginTire;“開嵯時蚓intfInis
3、hTime;/舞成時用intcyclingTlnej/祖轉時期double weigthCyclingTime: 可見班如:回.nt hadRunTinie;int finish:>PCB;/已建運行時間/是苦完成程序所用PCB結構體需要用到的進程結構體如上圖所示1)時間片輪轉法主要是設置一個當前時間變量,curTime和時間片roundTime。遍歷進程組的時候,每運行一個進程,就把 curTime += roundTime。進程已運行時間加 roundTime2)短作業優先算法遍歷進程組,找到未運行完成并且運行時間最短的進程,讓它一次運行完成,如此往復,直到所有進程都運行完成為止。3
4、)動態優先級算法做法跟短作業優先算法類似,此處主要是比較進程的優先數,優先級高者,先執行。直到全部執行完畢。當一個進程運行完畢后, 適當增減其余進程的優先數, 以達到動態調成優 先級的效果。3. 程序流程圖四、運行截圖1)啟動后輸入5,生成5個進程當時歙認進理曲氫由2-2。S愉人白匕西機生成進稅tt昌2,儲入279范的內或宇回軍,可生成指定數目道相»»»52)輸入1,選擇時間片輪轉法。自動輸出結果,分別是時間片為1和4的結果hmmh MMSMiMg 笳燈酎間拜始時間也書名副達時間鼻度時間平均網轉ft間'21.28二,均定如Q科克間3即隊重廝受成迸程I 1
5、,時間片輪莽詼I,施作業優先算定I主動盍優先稅算磕I 5退出 »»»1周轉國向澳權脫軸時間 優先微|4,BB34.00a2,9654.BB74,173城程各乳達時間運行司閘開始時間完成時同周轉時間帝權需軸對同憂無量A&4Q44LJB3Ba3477Z.333C91«72929Z.905Da61125354.177E061527274.503平均周轉時間 18.40平均帶權比轉時間,,日3)輸入2,選擇短作業優先算法 WBW««jjlij JlJf»明重新主成進線| 工,時間舟輪鑄裱| Z,短作業優先算法| 3 .牛奇就
6、先簟其法|小退出 >>»»2|皓程名到達時間我行時間開始療間完成時間周轉國閭幫根K第時間優先轂1 Aaa3771.753Be39331.99»Ca10129292.9B5D06131。193.1771 Ea6713132.X73平均周轉時間:14.2。平均辭權底轉時間:2.”4)輸入3,選擇動態優先級算法HiM-BB-VHr WMVM W-Jijj 1H*鬧出九市薪生成迸理| 1 時間月輪轉法|,韓作曲優晶算笳1 3幣蒼優先統背就| 5電程名到達時間K燈時間開酋時間完成時回周韓時間帚機比轉時間1 A84913133.25Be3e33i.eeC&
7、1口13S373;.3fl口e62329294.831 E0平均市帛田閘;15.40639平均帶權慮轉時周行有日9L.50 "動毒優先級W法3 9 5 735)輸入0,重新生成進程,再輸入3,生成3個進程,選擇2.短作業優先算法li-BM隊重用笠成進程I i.時間片輪我造,姆作業優先算去 m動杰優先an(法甲退附 »»»4鷲黨歌認迸財做近用220口柏人B耳殖機生成進程蚊口司輸人2-28范圉內依字,回車,可生成指定敵口迸"+±>+»31” » >' ," 心重需生成道理| 1.時間片輪技
8、法1 2 .擔作業優先算法|主功窸優先跳算注| q,退出 »»»2 _ 1 J H H 11 1 Hm J j ;去1 1 1 111 11 1 T H M-M Q|送程名乳迷時間運行的同開始酢間宛慮酢間周犯目間能權H期時間優先雅|A014123131L.634|B010212121.2Q2C02022L.QQ9平均周凡對間.15. ae早均帚權周轉時間;1 jb6)輸入q,退出B.重新生成進榨| 1,時間片輪錯法|乙婦無業優先算法|工就蠢比光雄真淺| q.國出 »»»qProgram ended with ex it cc-de:
9、fl|五、心得體會通過這次實驗,讓我對操作系統的進程調度有了更進一步的了解。這個實驗的模擬程度跟真實系統相比只是冰山一角,由此可見操作系統是何其復雜的軟件 產品,僅進程調度就有那么豐富和內涵的知識需要掌握。但是再復雜的系統,都是由小部件構成的。古語云:不積陛步,無以至千里。不積小流,無以成江海。掌握這些基礎的知識,可以為以后打下扎實的基礎。六、附錄(源代碼)/ main.c/ ProcessDispatch/ Created by Jeans on 1巧/15./ Copyright (c) 2015 Jeans. All rights reserved./#include <stdio
10、.h>#include <stdlib.h> /最小進程數#define MIN_PROCESS2/最大進程數#define MAX_PROCESS20 /最小優先數#define MIN_PRIORITY0/最大優先數#define MAX_PRIORITY10 /最小運行時間#define MIN_RUNNING_TIME1/最大運行時間#define MAX_RUNNING_TIME20 typedef struct PCBchar name;/進程名int priority;/優先數int runningTime;/運行時間int arriveTime;/到達時間in
11、t beginTime;/開始時間int finishTime;/完成時間int cyclingTime;/周轉時間double weigthCyclingTime; /帶權周轉時間int hadRunTime; / 已經運行時間int finish;/是否完成PCB;/獲取隨機數int GetRandomNumber(int min, int max) return arc4random()%(max-min) + min;初始化PCB組void InitPCBGroup( PCB p, int num)char name = 'A'for (int i = 0;i <
12、 num;i+)pi. name = name;pi. priority = GetRandomNumber(MIN_PRIORITY , MAX_PRIORITY );pi. runningTimeGetRandomNumber(MIN_RUNNING_TIME ,MAX_RUNNING_TIME ); name+;void PrintResult( PCB p, int num)double avgCycTime = 0,avgWeiCycTime = 0;printf ("|進程名 到達時間 運行時間 開始時間 完成時間 周轉時間 帶權周轉時間 優先數 |n");fo
13、r (int i = 0;i < num;i+)printf("|%3c %-4d%-4d%-4d%-4d%-4d%-6.2f%-4d|n",pi. name,pi. arriveTime,pi. runningTime ,pi. beginTime,pi. finishTime ,pi. cyclingTime , pi. weigthCyclingTime ,pi. priority );avgCycTime += pi. cyclingTime ;avgWeiCycTime += pi. weigthCyclingTime ;/還原pi. arriveTime
14、= 0;pi. beginTime = 0;pi. finishTime = 0;pi. cyclingTime = 0;pi. weigthCyclingTime = 0;pi. hadRunTime = 0;pi. finish = 0;avgWeiCycTime /= num;avgCycTime /= num;printf (" 平 均 周 轉 時 間 :%.2f平 均 帶 權 周 轉 時間 :%.2fn" ,avgCycTime,avgWeiCycTime);/時間片輪轉法void RealRoundRobin(PCB p, int num,int roundTi
15、me)printf ("nn 時間片: %dn" ,roundTime);int finishNum = 0;int curTime = 0;while (finishNum != num) for (int i = 0;i < num;i+) if (pi. finish)continue;/開始時間if (pi. beginTime = 0 && i != 0)pi. beginTime = curTime;/已經完成if (pi. hadRunTime + roundTime >= pi. runningTime )pi. finishTi
16、me = curTime + pi. runningTime - pi. hadRunTime;pi. cyclingTime = pi. finishTime - pi. arriveTime ;pi. weigthCyclingTime = pi. cyclingTime /(double)pi. runningTime ;pi. finish = 1;finishNum +;curTime += pi. runningTime - pi. hadRunTime; elsepi. hadRunTime += roundTime;curTime += roundTime;PrintResul
17、t(p, num);void RoundRobin( PCB p, int num)RealRoundRobin(p, num, 1); /時間片為1的結果RealRoundRobin(p, num, 4); / 時間片為4的結果/短作業優先算法void ShortestJobFirst(PCB p, int num)printf ("nn 短作業優先算法n" );int finishNum = 0;int curTime = 0;while (finishNum != num) int min = 0;/查找短作業下標for (int i = 1;i < num;i
18、+)if (pi. finish = 0 && pmin. runningTime >= pi. runningTime) min = i;else if (pi. finish = 0 && pmin. finish = 1) min = i; pmin. beginTime = curTime;pmin. hadRunTime = pmin. runningTime;pmin. finishTime = pmin. beginTime + pmin. runningTime; pmin. cyclingTime = pmin. finishTime -
19、 pmin. arriveTime ;pmin. weigthCyclingTime = pmin. cyclingTime/(double)pmin. runningTime ;pmin. finish = 1;finishNum+;curTime = pmin. finishTime ;PrintResult(p, num);/動態優先級算法void DynamicPriorityFirst( PCB p, int num)printf ("nn 動態優先級算法n" );int finishNum = 0;int curTime = 0;while (finishNum
20、 != num) int min = 0;/查找優先級最高下標for (int i = 1;i < num;i+)if (pi. finish = 0 && pmin. priority >= pi. priority ) min = i;else if (pi. finish = 0 && pmin. finish = 1) min = i;pmin. beginTime = curTime;pmin. hadRunTime = pmin. runningTime;pmin. finishTime = pmin. beginTime + pmin.
21、 runningTime;pmin. cyclingTime = pmin. finishTime - pmin. arriveTime ;pmin. weigthCyclingTime = pmin. cyclingTime/(double)pmin. runningTime ;pmin. finish = 1;finishNum+;curTime = pmin. finishTime ;PrintResult(p, num);int main(int argc, const char * argv) PCB pcbGroup30; /pcb 數組int processNum = 0; /進
22、程數while (1) /選擇進程數量while (1) if (processNum != 0)break;printf ("nn");printf ("當前默認進程數范圍 d-%dn" ,MIN_PROCESS ,MAX_PROCESS );printf("1)輸入0可隨機生成進程數目n2)輸入d-%d范圍內數字,回車,可生成指定數目進程n>>>>>>" ,MIN_PROCESS ,MAX_PROCESS );int num = 0;scanf("%d" ,&num);if (num =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業園區設備的節能減排措施與計劃
- 工業廢棄地再開發與環保協同策略
- 工業旅游與文化產業發展
- 工業機器人與自動化技術結合的實踐
- 工業污染防治與效果評估
- 工業用高分子材料的性能與市場分析
- 工業機器人技術的發展及其在制造中的應用
- 工業污染防治的技術與挑戰
- 工業節能與綠色制造技術
- 工業環境下的智能決策支持系統研究
- 共享廚房的創業計劃書
- 數據可視化倫理問題
- 國家開放大學化工節能課程-復習資料期末復習題
- JB-T 4088.1-2022 日用管狀電熱元件 第1部分:通用要求
- 國內民用船舶修理價格表(92黃本)
- 國家中長期科技發展規劃綱要2021-2035
- 中學生早餐調查報告公開課一等獎課件省賽課獲獎課件
- 【解析】江西省新余市2023年小升初語文試卷
- TACEF 077-2023 污染地塊風險管控與修復工程職業健康防護指南
- 2023-2024學年四川省阿壩州小學語文四年級期末深度自測試卷詳細參考答案解析
- 高等量子力學-課件
評論
0/150
提交評論