![操作系統(tǒng)課程設計報告進程調度_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/29/f7b86a65-dda8-4074-9353-975873c91c1c/f7b86a65-dda8-4074-9353-975873c91c1c1.gif)
![操作系統(tǒng)課程設計報告進程調度_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/29/f7b86a65-dda8-4074-9353-975873c91c1c/f7b86a65-dda8-4074-9353-975873c91c1c2.gif)
![操作系統(tǒng)課程設計報告進程調度_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/29/f7b86a65-dda8-4074-9353-975873c91c1c/f7b86a65-dda8-4074-9353-975873c91c1c3.gif)
![操作系統(tǒng)課程設計報告進程調度_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/29/f7b86a65-dda8-4074-9353-975873c91c1c/f7b86a65-dda8-4074-9353-975873c91c1c4.gif)
![操作系統(tǒng)課程設計報告進程調度_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/29/f7b86a65-dda8-4074-9353-975873c91c1c/f7b86a65-dda8-4074-9353-975873c91c1c5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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時間,內存空間的開辟,調用打印機等。操作系統(tǒng)的主要功能是資源管理,程序控制和人機交互等。計算機系統(tǒng)的資源可分為設備資源和信息資源兩大類。設備資源指的是組成計算機的硬件設備,如中央處理器,主存儲器,磁盤存儲器,打印機,磁帶存儲器,顯示器,鍵盤輸入設備和鼠標等。信息資源指的是存放于計算機內的各種數(shù)據(jù),如系統(tǒng)軟件和應用軟件等。操作系統(tǒng)位于底層硬件與用戶之間,是兩者溝通的橋梁。用戶可以通過操作系統(tǒng)的用戶界面,輸入命令。操作系統(tǒng)則對命令進行解釋,驅動硬件設備,實現(xiàn)用戶要求。本次課程設計我們將對上學期所學的知識進行系統(tǒng)的應用,而達到鞏固知識的作用目錄1問題概述22需求分析23 概要設計
3、23.1主要功能23.2 模塊功能結構33.3 軟硬件環(huán)境33.4數(shù)據(jù)結構設計34 詳細設計44.1“先來先服務(FCFS)調度算法”44.2“短進程調度算法(SPF)”64.3“高響應比優(yōu)先調度算法”84.4“優(yōu)先級調度(非搶占式)算法”105 系統(tǒng)測試及調試125.1測試125.2調試過程中遇到的問題136 心得體會147 參考文獻158 附錄1611問題概述編寫一個進程調度程序,允許多個進程并發(fā)執(zhí)行。采取多種進程調度算法(先來先服務(FCFS)調度算法,短進程調度算法(SPF),高響應比優(yōu)先調度算法,優(yōu)先級調度(非搶占式)算法)。分析比較各個算法的優(yōu)缺點。2需求分析進程調度的功能是記錄系
4、統(tǒng)中所有進程的執(zhí)行情況、從就緒態(tài)隊列中選擇一個進程,進行進程上下文的切換。采取不同的算法根據(jù)外部環(huán)境及條件進行進程的切換。3 概要設計3.1主要功能進程調度的功能是記錄系統(tǒng)中所有進程的執(zhí)行情況、從就緒態(tài)隊列中選擇一個進程,進行進程上下文的切換。采用先來先服務(FCFS)調度算法,短進程調度算法(SPF),高響應比優(yōu)先調度算法,優(yōu)先級調度(非搶占式)算法進行進程的切換。3.2 模塊功能結構主界面1進程信息輸入2先來先服務算法3短進程調度算法4高響應比優(yōu)先調度算法5優(yōu)先級調度算法0退出 圖3.2系統(tǒng)結構圖3.3 軟硬件環(huán)境本程序所適用的計算機系統(tǒng)軟硬件環(huán)境要求為:硬件環(huán)境: Pentium
5、0;III 500以上 內存:256M 軟件環(huán)境: Linux Windows 7 應用軟件: Dev-C+ 3.4數(shù)據(jù)結構設計struct PCB_structchar name10; /進程名稱int priority; /優(yōu)先級 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“先來先服務(FCF
6、S)調度算法”4.1.1具體方法 先來先服務算法是按照進程到達先后次序來進行調度。進入該函數(shù)后讀取每個進程控制塊PCB中的到達時間come_T 從come_T最早的開始運行,依次運行完畢。記錄開始運行時間run_begin_T和結束運行時間run_end_T,并記錄運行次序。最后調用調度結果輸出函數(shù),輸出進程信息和平均周轉時間和平均帶權周轉時間。4.1.2運行結果圖4.1.2“先來先服務調度算法”運行結果圖4.1.3系統(tǒng)流程圖圖4.1.3“先來先服務(FCFS)調度算法”4.2“短進程調度算法(SPF)” 4.2.1具體方法 短進程調度算法是指對短進程優(yōu)先調度的算法,這里進程的長短是以進程要求
7、運行的時間的長短來衡量。 進入該函數(shù)后讀取每個進程控制塊中的到達時間come_T,選取最早的,若時間相同則選運行時間最短的進程進行調度,記錄開始運行時間run_begin_T和結束運行時間run_end_T,并記錄運行次序。一個進程運行完成后,在查看在此進程運行時間內到達的進程,選取運行時間最短的運行,依次重復,直至所有進程運行完畢,最后調用調度結果輸出函數(shù),輸出進程信息和平均周轉時間和平均帶權周轉時間。 4.2.2運行結果圖4.2.2“短進程調度算法”運行結果圖4.2.3系統(tǒng)流程圖圖4.2.3短進程調度算法(SPF)流程圖4.3“高響應比優(yōu)先調度算法”4.3.1具體方法 響應比高者進程優(yōu)先的
8、算法,響應比的定義是指 R=(已等待時間+服務要求時間)/要求服務時間。實際上,高響應比優(yōu)先調度算法是先來先服務調度算法和短作業(yè)優(yōu)先調度算法的綜合調度算法。 進入該函數(shù)后讀取每個進程控制塊中的到達時間come_T,選取最早的,記錄開始運行時間run_begin_T和結束運行時間run_end_T,并記錄運行次序。運行結束后,在查看在此進程運行時間內到達的進程,選取響應比最高的進程運行,依次重復,直至所有進程運行完畢,最后調用調度結果輸出函數(shù),輸出進程信息和平均周轉時間和平均帶權周轉時間。 4.3.2運行結果圖4.3.2“高響應比優(yōu)先調度算法”運行結果圖4.3.3系統(tǒng)流程圖圖4.3.3“高響應比
9、優(yōu)先調度算法”流程圖4.4“優(yōu)先級調度(非搶占式)算法”4.4.1具體方法 優(yōu)先級調度算法也成優(yōu)先權調度算法,本次采用非搶占式優(yōu)先級算法,在進程輸入時確定進程的優(yōu)先級,數(shù)字越大優(yōu)先級別越高。 進入該函數(shù)后讀取每個進程控制塊中的到達時間come_T,選取最早的,若時間相同則選優(yōu)先級別高的的進程進行調度,記錄開始運行時間run_begin_T和結束運行時間run_end_T,并記錄運行次序。一個進程運行完成后,在查看在此進程運行時間內到達的進程,選取優(yōu)先級別高者的進程運行,依次重復,直至所有進程運行完畢,最后調用調度結果輸出函數(shù),輸出進程信息和平均周轉時間和平均帶權周轉時間。 4.4.2執(zhí)行結果圖
10、4.4.2“優(yōu)先級調度(非搶占式)算法”運行結果圖4.4.3系統(tǒng)流程圖圖4.4.3“優(yōu)先級調度(非搶占式)算法”流程圖5 系統(tǒng)測試及調試 5.1測試5.1.1 實際測試數(shù)據(jù)表5.1.1實際測試數(shù)據(jù)5.1.2預期結果表5.1.2預期結果數(shù)據(jù)5.1.3實際運行結果表5.1.3實際運行結果數(shù)據(jù)5.1.4測試結論分析在這組測試數(shù)據(jù)中,當進程采用短進程調度優(yōu)先時,平均帶全周轉時間最短,效率最好。但由于進程的數(shù)據(jù)不同,我們可以采用不同的調度算法,應視情況而選取最佳的調度算法。5.2調試過程中遇到的問題5.2.1算法切換時的參數(shù)初始化問題因為該程要實現(xiàn)進程調度中幾種主要的算法的調度演示,并計算周轉時間進行比
11、較,那么就需要在一組進程上調用不同的算法,并可重復使用該數(shù)組。但是當從一個算法轉換到另一個算法的時候,涉及到一些關鍵變量的初始化問題。一開始我并沒有注意到這個問題,導致運行下一個算法時,因經過一次調度后,所有進程的狀態(tài)都為執(zhí)行完畢,所以第二次以及往后都不能得出正確的結論。經過多次測試后,在每個算法的子函數(shù)中加入,狀態(tài)初始化語句,使得程序能以正常運行,得出正確的數(shù)據(jù)。5.2.2輸出數(shù)據(jù)時顯示不全且亂輸出是開始時做的函數(shù),然而就遇到了挺煩的困難,因為每個進程的數(shù)據(jù)項多且雜,輸出后不挨個對著看根本不知道誰是誰,百度了很多個案例后決定每個數(shù)據(jù)輸出時嚴格控制格式,采用|將其分隔。使其看上去更加嚴謹,美觀
12、。其實很多小細節(jié)也要處理好才能更好體現(xiàn)出這個系統(tǒng)的優(yōu)點。6 心得體會通過這次課程設計,使我更加扎實的掌握了有關操作系統(tǒng)方面的知識,特別是進程以及各種調度算法。進程調度雖然是在系統(tǒng)內部的低級調度,但進程調度的優(yōu)劣直接影響作業(yè)調度的性能。反映作業(yè)調度優(yōu)劣的周轉時間和平均周轉時間只在某種程度上反映了進程調度的性能,例如,其執(zhí)行時間部分中實際上包含有進程等待(包括就緒狀態(tài)時的等待)時間,而進程等待時間的多少是要依靠進程調度策略和等待事件何時發(fā)生等來決定的。因此,進程調度性能的商量是操作系統(tǒng)設計的一個重要指標。所以進程調度的重要性也是不可忽視的。這次的課程設計從選題到完成程序到最后寫出課設報告,中間遇到
13、了很多大大小小的問題,但是經過多方努力都得以解決,雖然它并不是一個完善的系統(tǒng),還存在著這樣那樣的問題,但是已經進我的努力去完善它。遇到問題時一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進行解決,只有這樣,才能成功的做成想做的事。最后,感謝老師的幫助及悉心的指導,感謝同學們的相互幫助,沒有他們我自己也不可能完成此次在項目中的任務,更加讓我明白了一個團隊的重要性,以及個人力量的單薄??偠灾?,還是謝謝大家的互幫互助,而完成這個項目,完成這次課設!7 參考文獻1王紅.操作系統(tǒng)原理及應用Linux.第二版.北京:中國水利水電出版社,2005.2王紅.操作系統(tǒng)實訓(L
14、inux)習題解答、例題解析、實驗指導.第二版.北京:中國水利水電出版社,2008.3孟靜.操作系統(tǒng)原理教程.北京:清華大學出版社,2000.4周蘇、金海溶. 操作系統(tǒng)原理實驗.北京: 科學出版社,2000.8 附錄 #include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std; /這樣命名空間std內定義的所有標識符都有效(曝光)。就好像它們被聲明為全局變量一樣。#define MAX 10struct PCB_structchar name10; /進程名稱int num
15、ber; /進程編號int priority; /優(yōu)先級 float come_T; /到達時間float run_begin_T; /開始運行時間float run_end_T; /開始結束時間float run_T; /運行時間int order; /運行次序 int run_flag; /調度標志 PCBMAX,pcb; int counter; /實際生成進程個數(shù) void FCFS(); /先來先服務算法 void SPF(); /短進程調度算法void HRRN(); /高響應比優(yōu)先調度算法 void PRI(); /優(yōu)先級調度(非搶占式)算法 void Input(); /進程輸
16、入 void Output(); /調度結果輸出 int main(void)int option;while(1)printf("nn *進程調度管理*"); printf("nn *1 進程信息輸入 ");printf("nn *2 采用 先來先服務算法 進行進程調度 并輸出");printf("nn *3 采用 短進程調度算法 進行進程調度 并輸出");printf("nn *4 采用 高響應比優(yōu)先調度算法 進行進程調度 并輸出");printf("nn *5 采用 優(yōu)先級調度(
17、非搶占式)算法 進行進程調度 并輸出 ");printf("nn *0 退出 ");printf("nn 請選擇:");scanf("%d",&option);switch(option)case 0: printf("運行結束,再見"); exit(0); break;case 1: Input(); break;case 2: printf("n *對進程按先來先服務調度:nn"); FCFS(); Output(); break; case 3: printf("
18、;n *對進程按短進程調度:nn"); SPF(); Output(); break; case 4: printf("n *對進程按高響應比優(yōu)先調度:nn"); HRRN(); Output(); break; case 5: printf("n *對進程按優(yōu)先級調度(非搶占式)調度:nn"); PRI(); Output(); break; default: printf("n *輸入錯誤! 請重新輸入: "); void Input()int i;printf("n *請輸入即將運行的進程的個數(shù):"
19、);scanf("%d",&counter);for(i=0;i<counter;i+)printf("n *請輸入第%d個進程的信息:n",i+1);printf("n *請輸入進程名字:");scanf("%s",PCB); printf("n *請輸入進程編號:");scanf("%d",&PCBi.number); printf("n *請輸入進程的優(yōu)先級:");scanf("%d",&
20、PCBi.priority); printf("n *請輸入進程的到達時間:");scanf("%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; printf("n *錄入結束!");void Output()int i;float turn_round_T=0,f
21、1,w=0; /f1是周轉時間 w是平均帶權周轉時間 printf("n|進程名稱|進程編號|優(yōu)先級|到達時間|運行時間|開始時間|結束時間|運行次序|周轉時間|"); for(i=0;i<counter;i+) f1=PCBi.run_end_T-PCBe_T; turn_round_T=turn_round_T+f1; w=w+(f1/PCBi.run_T); printf("| | | | | | | | | |"); printf("| %s | %d | %d | %5.2f | %5.2f | %5.2f | %5.
22、2f | %d | %5.2f |", PCB,PCBi.number,PCBi.priority,PCBe_T,PCBi.run_T,PCBi.run_begin_T,PCBi.run_end_T,PCBi.order,f1); printf("n *平均周轉時間為:%5.2f",turn_round_T/counter); printf("n *平均帶權周轉時間為:%5.2f",w/counter);void FCFS()int i,j,time;if(counter!=1)for(i=0;i<counter;i
23、+) for(j=0;j<counter-i-1;j+)if(PCBe_T>PCBj+1.come_T)pcb=PCBj;PCBj=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;
24、PCBi.order=i+1; /運行每個程序 void SPF()float time = 0;int i=0,j;int number=0,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+; /查找第一個被調度的進程 /對第一個被調度的進程運行 num
25、ber=i;if(time<PCBe_T)PCBnumber.run_begin_T=PCBe_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<
26、=time)&&(PCBj.run_flag!=1) run_time = PCBj.run_T;number = j;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; /查找下一個被調度的進程 /對找到的下一個被調度的進程求運行 PCBnumber.run_begin_T=time; PCBnumber.run_end_T=PCBnumber.r
27、un_begin_T+PCBnumber.run_T; PCBnumber.run_flag=1; time=PCBnumber.run_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.ru
28、n_begin_T=time;PCB0.run_end_T=PCB0.run_begin_T+PCB0.run_T;PCB0.run_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; else PCBnumber.run_begin_T=time; PCBnumber.run_end_T=PCBnumber.run_begin_T+PCBnumber.run_T; PCBn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子產品物流合同要點分析
- 2025年度辦公室綠植養(yǎng)護與室內環(huán)境美化合同
- 房屋租賃合同公文
- 企業(yè)人才測評及職業(yè)發(fā)展規(guī)劃支持方案設計
- 云計算服務配置與管理手冊
- 解決方案設計與實施指南
- 設計服務合同書
- 企業(yè)信息化解決方案操作手冊
- 建設工程施工分包委托協(xié)議書
- 車床購買合同樣本
- 2024年廣西區(qū)公務員錄用考試《行測》真題及答案解析
- 助理醫(yī)師醫(yī)院協(xié)議書(2篇)
- 短暫性腦缺血發(fā)作
- 父親歸來那一天(2022年四川廣元中考語文試卷記敘文閱讀題及答案)
- 小學數(shù)學五年級上冊奧數(shù)應用題100道(含答案)
- 工業(yè)機器人編程語言:Epson RC+ 基本指令集教程
- 2024年同等學力申碩統(tǒng)考英語卷
- 2023.05.06-廣東省建筑施工安全生產隱患識別圖集(高處作業(yè)吊籃工程部分)
- 2024年上海高考數(shù)學真題試題(原卷版+含解析)
- JTG 3362-2018公路鋼筋混凝土及預應力混凝土橋涵設計規(guī)范
- 電動汽車用驅動電機系統(tǒng)-編制說明
評論
0/150
提交評論