先來先服務調度算法模擬實驗程序源代碼(C語言)教學提綱_4928_第1頁
先來先服務調度算法模擬實驗程序源代碼(C語言)教學提綱_4928_第2頁
先來先服務調度算法模擬實驗程序源代碼(C語言)教學提綱_4928_第3頁
先來先服務調度算法模擬實驗程序源代碼(C語言)教學提綱_4928_第4頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)課程綜合性實驗報告開課實驗室:2011 年05 月17日實驗題目進程調度算法程序設計一、實驗目的通過對進程調度算法的模擬,進一步理解進程的基本概念,加深對進程運行狀態(tài)和進程調度過程、調度算法的理解。二、設備與環(huán)境1. 硬件設備: PC 機一臺2. 軟件環(huán)境:安裝 Windows 操作系統(tǒng)或者 Linux 操作系統(tǒng),并安裝相關的程序開發(fā)環(huán)境,如 C C+Java 等編程語言環(huán)境。三、實驗內容( 1)用 C 語言(或其它語言,如 Java)實現(xiàn)對 N 個進程采用某種進程調度算法(如動態(tài)優(yōu)先權調度)的調度。( 2)每個用來標識進程的進程控制塊PCB 可用結構來描述,包括以下字段:進程標識數(shù)I

2、D 。進程優(yōu)先數(shù)PRIORITY ,并規(guī)定優(yōu)先數(shù)越大的進程,其優(yōu)先權越高。進程已占用CPU 時間 CPUTIME 。進程還需占用的CPU 時間 ALLTIME 。當進程運行完畢時,ALLTIME變?yōu)?0。進程的阻塞時間STARTBLOCK ,表示當進程再運行STARTBLOCK個時間片后,進程將進入阻塞狀態(tài)。進程被阻塞的時間BLOCKTIME,表示已阻塞的進程再等待BLOCKTIME個時間片后,將轉換成就緒狀態(tài)。進程狀態(tài)STATE 。隊列指針NEXT ,用來將PCB 排成隊列。( 3)優(yōu)先數(shù)改變的原則:進程在就緒隊列中呆一個時間片,優(yōu)先數(shù)增加1。進程每運行一個時間片,優(yōu)先數(shù)減3。( 4)為了清

3、楚地觀察每個進程的調度過程,程序應將每個時間片內的進程的情況顯示出來,包括正在運行的進程,處于就緒隊列中的進程和處于阻塞隊列中的進程。( 5)分析程序運行的結果,談一下自己的認識。四、實驗結果及分析1.實驗設計說明本次實驗采用C 語言模擬對N 個進程采用先來先服務進程調度算法調度。每個用來標識進程的進程控制塊PCB 用結構來描述,包括以下字段:進程標識數(shù) ID3 、進程名 name10、進程狀態(tài) state、進程到達時間 arrivetime 、進程開始執(zhí)行時間 starttime、進程執(zhí)行結束時間 finishtime 、服務時間 servicetime 、周轉時間 turnaroundti

4、me 、帶權周轉時間 weightedturnaroundtime 、隊列指針 next 用來將 PCB 排成隊列。主要程序流程圖(進程的執(zhí)行過程):開始P=HEAD ; i=0YNP-STATE= F?P=Q;P=P-NEXT;P=P-NEXT;YNQ-ARRIVETIME TIME?Q-STARTTIME=ARRIVETIMEQ-STATE= TQ-STARTTIME=TIMEQ-STATE= Ti+; 輸出執(zhí)行進程信息YNi arrivetime time? p1-arrivetime:time;p1-starttime=time;printf(n 現(xiàn)在時間是 %d,開始運行作業(yè)%sn,

5、time,p1-name);time+=p1-servicetime;p1-state=T;p1-finishtime=time;p1-turnaroundtime=p1-finishtime-p1-arrivetime;p1-weightedturnaroundtime=p1-turnaroundtime/p1-servicetime;printf(ID 到達時間 開始時間 服務時間 完成時間 周轉時間 帶權周轉時間 n); printf(%s%6d%10d%10d%8d%10.1f%10.2fn,p1-ID,p1-arrivetime,p1-starttime,p1-servicetime

6、,p1-finishtime,p1-turnaroundtime,p1-weightedturnaroundtime);void fcfs() / 找到當前未完成的進程int i,j;p=head;for(i=0;istate=F)q=p;/標記當前未完成的進程run_fcfs(q);p=p-next;void getInfo()/ 獲得進程信息并創(chuàng)建進程int num;printf(n 作業(yè)個數(shù)scanf(%d,&n);:);for(num=0;numID,&p-name,&p-arrivetime,&p-servicetime); if(head=NULL) head=p;q=p;time

7、=p-arrivetime;if(p-arrivetime arrivetime;q-next=p;p-starttime=0;p-finishtime=0;p-turnaroundtime=0;p-weightedturnaroundtime=0;p-next=NULL;p-state=F;q=p;void main()printf( 先來先服務算法模擬);getInfo();p=head;fcfs();3.實驗結果測試用例進程名到達時間服務時間A01B1100C21D31004.實驗結果分析先來先服務算法顧名思義先到的先參與調度,本利中按照非搶占方式, 所以先到的進程必須執(zhí)行完來才能執(zhí)行下

8、一個進程,決于到達時間和上一個進程的結束時間中較晚的一個,如C的完成時間是101,所以 C 進程的開始時間為101。由實驗結果可以看出,短作業(yè)C 的帶權周轉時間竟高達A 、B、C、 D 的順序。因為只有下一個進程的開始時間也就取進程的到達時間是2,但是 B 進程100,而長作業(yè)D 的帶權周轉時間僅為 1.99,據(jù)此可知, FCFS 算法有利于CPU 繁忙的作業(yè),而不利于I/O 繁忙型的作業(yè)(進程) 。5.實驗心得本次實驗設應用鏈表結構進行存儲并排序,條理清晰,易于理解,程序編寫完成以后,實現(xiàn)類預期對結果。界面設計比較清晰明了,易于閱讀。本程序中靈活地設計調用函數(shù)和函數(shù)嵌套來簡化程序,例如在查找未執(zhí)行進程和對未

溫馨提示

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

評論

0/150

提交評論