操作系統(tǒng)課程設計報告進程調(diào)度_第1頁
操作系統(tǒng)課程設計報告進程調(diào)度_第2頁
操作系統(tǒng)課程設計報告進程調(diào)度_第3頁
操作系統(tǒng)課程設計報告進程調(diào)度_第4頁
操作系統(tǒng)課程設計報告進程調(diào)度_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)(Operating System,簡稱OS是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統(tǒng)軟件,任 何其他軟件都必須在操作系統(tǒng)的支持下才能運行。操作系統(tǒng)是用戶和計算機的接口,同時也是計算機硬件和其他軟件的接 口。操作系統(tǒng)的功能包括管理計算機系統(tǒng)的硬件、軟件及數(shù)據(jù)資源,控制程 序運行,改善人機界面,為其它應用軟件提供支持,讓計算機系統(tǒng)所有資源 最大限度地發(fā)揮作用,提供各種形式的用戶界面,使用戶有一個好的工作環(huán) 境,為其它軟件的開發(fā)提供必要的服務和相應的接口等。實際上,用戶是不 用接觸操作系統(tǒng)的,操作系統(tǒng)管理著計算機硬件資源,同時按照應用程序的 資源請求

2、,分配資源,如:劃分 CPU時間,內(nèi)存空間的開辟,調(diào)用打印機等。操作系統(tǒng)的主要功能是資源管理, 程序控制和人機交互等。計算機系統(tǒng)的 資源可分為設備資源和信息資源兩大類。設備資源指的是組成計算機的硬件 設備,如中央處理器,主存儲器,磁盤存儲器,打印機,磁帶存儲器,顯示 器,鍵盤輸入設備和鼠標等。信息資源指的是存放于計算機內(nèi)的各種數(shù)據(jù), 如系統(tǒng)軟件和應用軟件等。操作系統(tǒng)位于底層硬件與用戶之間, 是兩者溝通的橋梁。用戶可以通過操 作系統(tǒng)的用戶界面,輸入命令。操作系統(tǒng)則對命令進行解釋,驅(qū)動硬件設備, 實現(xiàn)用戶要求。而達到鞏固知本次課程設計我們將對上學期所學的知識進行系統(tǒng)的應用, 識的作用1問題概述2需

3、求分析3概要設計3.1主要功能3.2模塊功能結(jié)構3.3軟硬件環(huán)境3.4數(shù)據(jù)結(jié)構設計4詳細設計4.1目錄先來先服務(FCFS )調(diào)度算法4.2短進程調(diào)度算法(SPF ) ”4.3 “高響應比優(yōu)先調(diào)度算法”4.4優(yōu)先級調(diào)度(非搶占式)算法” 5系統(tǒng)測試及調(diào)試 5.1測試 5.2調(diào)試過程中遇到的問題 6心得體會 7參考文獻 8附錄1問題概述編寫一個進程調(diào)度程序,允許多個進程并發(fā)執(zhí)行。采取多種進程 調(diào)度算法(先來先服務(FCFS )調(diào)度算法,短進程調(diào)度算法(SPF), 咼響應比優(yōu)先調(diào)度算法,優(yōu)先級調(diào)度(非搶占式)算法)。分析比較 各個算法的優(yōu)缺點。2需求分析進程調(diào)度的功能是記錄系統(tǒng)中所有進程的執(zhí)行情況

4、、 從就緒態(tài)隊列 中選擇一個進程,進行進程上下文的切換。采取不同的算法根據(jù)外部 環(huán)境及條件進行進程的切換。3概要設計3.1主要功能進程調(diào)度的功能是記錄系統(tǒng)中所有進程的執(zhí)行情況、 從就緒態(tài)隊列 中選擇一個進程,進行進程上下文的切換。采用先來先服務(FCFS) 調(diào)度算法,短進程調(diào)度算法(SPF),高響應比優(yōu)先調(diào)度算法,優(yōu)先 級調(diào)度(非搶占式)算法進行進程的切換。3.2模塊功能結(jié)構圖3.23.3軟硬件環(huán)境件環(huán)境牛環(huán)境亡i :Pen2 先n 來tiumIXTT500W短do 進1以上ws 7內(nèi)存高 響:2p6Mn5優(yōu)先0 退 出用軟件:先Dev-C+卜程應級息服調(diào)比調(diào)結(jié)勾設十務度優(yōu)度入算算先算;B_s

5、tnict法法調(diào)法1度算法本程序所適用的計算機系統(tǒng)軟硬件環(huán)境要求為硬,軟,應'struct PC3.4數(shù)/進程名稱 /優(yōu)先級 /進程編號 /到達時間 /開始運行時間 /結(jié)束運行時間 /運行時間 /運行次序 /調(diào)度標志char name10; int priority; int number;float come_T;float run_begin_T;float run_end_T;float run_T;int order;int run_flag; PCBMAX;4 詳細設計 4.1“先來先服務( FCFS )調(diào)度算法 ”先來先服務算法是按照進程到達先后次序來進行調(diào)度。進入該函數(shù)后

6、讀取每個進程控制塊 PCB 中的到達時間 come_T從 come_T 最早的開始運行,依次運行完畢。記錄開始運行時間run_begin_T和結(jié)束運行時間run_end_T,并記錄運行次序。最后調(diào)用調(diào)度結(jié)果輸出函數(shù), 輸出進程信息和平均周轉(zhuǎn)時間和平均帶權周轉(zhuǎn)時 間。圖 4.1.2 “先來先服務調(diào)度算法”運行結(jié)果圖圖4.1.3 “先來先服務(FCFS調(diào)度算法”4.2“短進程調(diào)度算法( SPF )”短進程調(diào)度算法是指對短進程優(yōu)先調(diào)度的算法, 這里進程的長短 是以進程要求運行的時間的長短來衡量。進入該函數(shù)后讀取每個進程控制塊中的到達時間come_T,選取最早的,若時間相同則選運行時間最短的進程進行調(diào)

7、度, 記錄開始運 行時間run_begin_T和結(jié)束運行時間run_end_T,并記錄運行次序。一個進程運行完成后, 在查看在此進程運行時間內(nèi)到達的進程, 選取 運行時間最短的運行,依次重復,直至所有進程運行完畢,最后調(diào)用 調(diào)度結(jié)果輸出函數(shù), 輸出進程信息和平均周轉(zhuǎn)時間和平均帶權周轉(zhuǎn)時 間。圖 4.2.2 “短進程調(diào)度算法”運行結(jié)果圖4.3“高響應比優(yōu)先調(diào)度算法”響應比高者進程優(yōu)先的算法,響應比的定義是指R=(已等待時間+服務要求時間) /要求服務時間。實際上,高響應比優(yōu)先調(diào)度算法是先來先服務調(diào)度算法和短作業(yè)優(yōu)先調(diào)度算法的綜合調(diào)度算法。進入該函數(shù)后讀取每個進程控制塊中的到達時間come_T,選

8、取最早的,記錄開始運行時間 run_begin_T 和結(jié)束運行時間 run_end_T,并記錄運行次序。 運行結(jié)束后, 在查看在此進程運行時間內(nèi)到達的進 程,選取響應比最高的進程運行, 依次重復,直至所有進程運行完畢, 最后調(diào)用調(diào)度結(jié)果輸出函數(shù), 輸出進程信息和平均周轉(zhuǎn)時間和平均帶 權周轉(zhuǎn)時間。圖 4.3.2 “高響應比優(yōu)先調(diào)度算法”運行結(jié)果圖圖4.3.3 “高響應比優(yōu)先調(diào)度算法”流程圖4.4 “優(yōu)先級調(diào)度(非搶占式)算法”優(yōu)先級調(diào)度算法也成優(yōu)先權調(diào)度算法, 本次采用非搶占式優(yōu)先級 算法,在進程輸入時確定進程的優(yōu)先級,數(shù)字越大優(yōu)先級別越高。進入該函數(shù)后讀取每個進程控制塊中的到達時間come_T

9、,選取最早的,若時間相同則選優(yōu)先級別高的的進程進行調(diào)度, 記錄開始運 行時間run_begin_T和結(jié)束運行時間run_end_T,并記錄運行次序。一個進程運行完成后,在查看在此進程運行時間內(nèi)到達的進程, 選取 優(yōu)先級別高者的進程運行,依次重復,直至所有進程運行完畢,最后 調(diào)用調(diào)度結(jié)果輸出函數(shù),輸出進程信息和平均周轉(zhuǎn)時間和平均帶權周 轉(zhuǎn)時間。退出請選擇:4*對進程按高響應比優(yōu)先調(diào)度:周轉(zhuǎn)時間5-tin優(yōu)先級倒這吋即運彳亍吋即開始時I可結(jié)朿時間!運行找序13. nn2.Q04.ea7.00! 11004.002.GQ3,00間為7.002.155.0Q00! 11.ee! 1400iQ.ee圖4

10、42 “優(yōu)先級調(diào)度(非搶占式)算法”運行結(jié)果圖圖443 “優(yōu)先級調(diào)度(非搶占式)算法”流程圖5系統(tǒng)測試及調(diào)試 5.1測試進程名稱進程編號優(yōu)先級到達時間運行時間5.1.1實際測試數(shù)據(jù)5.1.2預期結(jié)果在這組測試數(shù)據(jù)中,當進程采用短進程調(diào)度優(yōu)先時,平均帶全周轉(zhuǎn)時間最短,效率最好。但由于進程的數(shù)據(jù)不同,我們可以采用不同的調(diào)度算法,應視情況而選取最佳的調(diào)度算法。5.2調(diào)試過程中遇到的問題因為該程要實現(xiàn)進程調(diào)度中幾種主要的算法的調(diào)度演示,并計算周轉(zhuǎn)時間進行比較,那么就需要在一組進程上調(diào)用不同的算法,并可重復使用該數(shù)組。但是當從一個算法轉(zhuǎn)換到另一個算法的時候,涉及到一些關鍵變量的初始化問題。一開始我并沒有

11、注意到這個問題, 導致運行下一個算法時,因經(jīng)過一次調(diào)度后,所有進程的狀態(tài)都為執(zhí)行完畢,所以第二次以及往后都不能得出正確的結(jié)論。經(jīng)過多次測試后,在每個算法的子函數(shù)中加入,狀態(tài)初始化語句,使得程序能以正常運行,得出正確的數(shù)據(jù)。5.2.2輸出數(shù)據(jù)時顯示不全且亂輸出是開始時做的函數(shù),然而就遇到了挺煩的困難,因為每個進程的數(shù)據(jù)項多且雜,輸出后不挨個對著看根本不知道誰是誰, 百度了很多個案例后決定每個數(shù)據(jù)輸出時嚴格控制格式,采用I將其分隔。使其看上去更加嚴謹,美觀。其實很多小細節(jié)也要處理好才能更好體現(xiàn)出這個系統(tǒng)的優(yōu)點。6 心得體會通過這次課程設計, 使我更加扎實的掌握了有關操作系統(tǒng)方面的 知識,特別是進程

12、以及各種調(diào)度算法。 進程調(diào)度雖然是在系統(tǒng)內(nèi)部的 低級調(diào)度, 但進程調(diào)度的優(yōu)劣直接影響作業(yè)調(diào)度的性能。 反映作業(yè)調(diào) 度優(yōu)劣的周轉(zhuǎn)時間和平均周轉(zhuǎn)時間只在某種程度上反映了進程調(diào)度 的性能,例如,其執(zhí)行時間部分中實際上包含有進程等待 ( 包括就緒 狀態(tài)時的等待 ) 時間,而進程等待時間的多少是要依靠進程調(diào)度策略 和等待事件何時發(fā)生等來決定的。 因此,進程調(diào)度性能的商量是操作 系統(tǒng)設計的一個重要指標。所以進程調(diào)度的重要性也是不可忽視的。這次的課程設計從選題到完成程序到最后寫出課設報告, 中間遇 到了很多大大小小的問題, 但是經(jīng)過多方努力都得以解決, 雖然它并 不是一個完善的系統(tǒng), 還存在著這樣那樣的問題

13、, 但是已經(jīng)進我的努 力去完善它。 遇到問題時一定要不懈努力, 不能遇到問題就想到要退 縮,一定要不厭其煩的發(fā)現(xiàn)問題所在, 然后一一進行解決, 只有這樣, 才能成功的做成想做的事。最后,感謝老師的幫助及悉心的指導,感謝同學們的相互幫助, 沒有他們我自己也不可能完成此次在項目中的任務, 更加讓我明白了 一個團隊的重要性,以及個人力量的單薄??偠灾?,還是謝謝大家 的互幫互助,而完成這個項目,完成這次課設!7 參考文獻1 王紅.操作系統(tǒng)原理及應用 Linux .第二版.北京: 中國水利 水電出版社 ,2005.2 王紅. 操作系統(tǒng)實訓( Linux )習題解答、例題解析、實驗 指導 .第二版. 北

14、京:中國水利水電出版社, 2008.3 孟靜. 操作系統(tǒng)原理教程 .北京: 清華大學出版社 ,2000.4 周蘇、金海溶 . 操作系統(tǒng)原理實驗 . 北京 : 科學出版社 ,2000. 8 附錄#include<stdio.h> #include<stdlib.h>#include<iostream>曝光)。using namespace std; /這樣命名空間 std 內(nèi)定義的所有標識符都有效 就好像它們被聲明為全局變量一樣。#define MAX 10 struct PCB_struct/進程名稱/進程編號 /優(yōu)先級/到達時間 /開始運行時間 /開始結(jié)束

15、時間 /運行時間 /運行次序 /調(diào)度標志char name10; int number;int priority;float come_T;float run_begin_T;float run_end_T;float run_T;int order;/實際生成進程個數(shù)/先來先服務算法/短進程調(diào)度算法/高響應比優(yōu)先調(diào)度算法 /優(yōu)先級調(diào)度(非搶占式)算法 /進程輸入 /調(diào)度結(jié)果輸出int run_flag; PCBMAX,pcb;int counter; void FCFS();void SPF(); void HRRN();void PRI();void Input(); void Outpu

16、t();int main(void)int option; while(1)printf("nn* 進程調(diào)度管理*");printf("nn*1進程信息輸入 ");printf("nn*2采用 先來先服務算法進行進程調(diào)度 并輸出 ");printf("nn*3采用 短進程調(diào)度算法進行進程調(diào)度 并輸出 ");printf("nn*4采用 高響應比優(yōu)先調(diào)度算法進行進程調(diào)度 并輸出 ");printf("nn*5采用 優(yōu)先級調(diào)度(非搶占式)算法進行進程調(diào)度 并輸出 ");print

17、f("nn*0退出 ");printf("nn 請選擇: "); scanf("%d",&option);switch(option)case 0: printf(" 運行結(jié)束,再見 "); exit(0); break;case 1:Input(); break;case 2:printf("nFCFS();Output(); break;case 3:printf("nSPF();Output(); break;case 4:printf("nHRRN();Output()

18、;break;case 5:printf("n*度:nn");PRI();Output(); break; default:printf("n*對進程按先來先服務調(diào)度 :nn");對進程按短進程調(diào)度 :nn");對進程按高響應比優(yōu)先調(diào)度 :nn");對進程按優(yōu)先級調(diào)度(非搶占式)調(diào)輸入錯誤! 請重新輸入 : ");void Input()int i;printf("nscanf("%d",&counter); for(i=0;i<counter;i+) printf("n

19、*請輸入即將運行的進程的個數(shù): ");請輸入第%d個進程的信息:n",i+1);printf("n * 請輸入進程名字: "); scanf("%s",PCB);printf("n* 請輸入進程編號: ");scanf("%d",&PCBi.number);");printf("n* 請輸入進程的優(yōu)先級:scanf("%d",&PCBi.priority);");printf("n* 請輸入進程的到達時間:s

20、canf("%f",&PCBe_T);");printf("n* 請輸入進程的運行時間:scanf("%f",&PCBi.run_T);PCBi.run_begin_T=0;PCBi.run_end_T=0;PCBi.order=0;PCBi.run_flag=0;* 錄入結(jié)束! "); printf("nvoid Output()int i;float turn_round_T=0,f1,w=0; /f1 是周轉(zhuǎn)時間 w 是平均帶權周轉(zhuǎn)時間 printf("n|進程名稱|進程編

21、號 優(yōu)先級|到達時間|運行時間開始時間結(jié)束時間| 運行次序|周轉(zhuǎn)時間|");for(i=0;i<counter;i+)f1=PCBi.run_end_T-PCBe_T; turn_round_T=turn_round_T+f1;*|");%s | %d | %d | %5.2f | %5.2f | %5.2f | %5.2f |",w=w+(f1/PCBi.run_T); printf("| %5.2f| printf("| | %dPCB,PCBi.number,PCBi.priority,PCBe_T,

22、PCBi.run_T,PCBi.run_begin_T,PCBi.run_end_T,PCBi.order,f1);* 平均周轉(zhuǎn)時間為: %5.2f",turn_round_T/counter);* 平均帶權周轉(zhuǎn)時間為: %5.2f",w/counter);printf("nprintf("nvoid FCFS()int i,j,time;if(counter!=1)for(i=0;i<counter;i+)for(j=0;j<counter-i-1;j+)if(PCBe_T>PCBj+1.come_T)pcb=PCBj;PC

23、Bj=PCBj+1;PCBj+1=pcb;/根據(jù)到達時間對進程進行排序time=0;for(i=0;i<counter;i+) if(time<PCBe_T) PCBi.run_begin_T=PCBe_T; elsePCBi.run_begin_T=time; PCBi.run_end_T=PCBi.run_begin_T+PCBi.run_T; PCBi.run_flag=1;time=PCBi.run_end_T; PCBi.order=i+1; / 運行每個程序void SPF()float time = 0;int i=0,j;int number=0

24、,temp;float run_time;run_time=PCBi.run_T;j=1;for(i=0;i<counter;i+)PCBi.run_flag=0;i=0;while(j<counter)&&(PCBe_T=PCBe_T) if(PCBj.run_T<PCBi.run_T) run_time=PCBj.run_T;i=j;j+;/ 查找第一個被調(diào)度的進程/對第一個被調(diào)度的進程運行 number=i;if(time<PCBe_T)PCBnumber.run_begin_T=PCBe

25、_T;elsePCBnumber.run_begin_T=time;PCBnumber.run_end_T=PCBnumber.run_begin_T+PCBnumber.run_T; PCBnumber.run_flag=1;time=PCBnumber.run_end_T;PCBnumber.order=1;temp = 1; while(temp<counter) for(j=0;j<counter;j+) if(PCBe_T<=time)&&(PCBj.run_flag!=1) run_time = PCBj.run_T;number = j

26、;break; for(j=0;j<counter;j+) if(PCBe_T<=time)&&(PCBj.run_flag!=1) if(PCBj.run_T<run_time)run_time = PCBj.run_T; number = j;/ 查找下一個被調(diào)度的進程/對找到的下一個被調(diào)度的進程求運行 PCBnumber.run_begin_T=time;PCBnumber.run_end_T=PCBnumber.run_begin_T+PCBnumber.run_T;PCBnumber.run_flag=1; time=PCBnumber.r

27、un_end_T; temp+;PCBnumber.order=temp;void HRRN()int i,j,number,temp_counter;float time=0,response_rate,max_response_rate;for(i=0;i<counter;i+)PCBi.run_flag=0;/運行第一個進程if(time<PCB0.come_T) PCB0.run_begin_T=PCB0.come_T;elsePCB0.run_begin_T=time;PCB0.run_end_T=PCB0.run_begin_T+PCB0.run_T;PCB0.run_

28、flag=1; time=PCB0.run_end_T;PCB0.order=1;temp_counter = 1;/運行其他進程 while(temp_counter<counter) max_response_rate=0; for(j=1;j<counter;j+) if(PCBe_T<=time)&&(!PCBj.run_flag) response_rate=(time-PCBe_T)/PCBj.run_T); if(response_rate>max_response_rate)max_response_rate=response_rate;number=j;if(time<PCBe_T)PCBnumber.run_begin_T=PCBe_T; elsePCBnumber.run_begin_T=time;PCBnumber.run_end_T=PCBnumber.run_begin_T+PCBnu

溫馨提示

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

評論

0/150

提交評論