操作系統(tǒng) 先來先服務(wù)算法FCFS(C語言)_第1頁
操作系統(tǒng) 先來先服務(wù)算法FCFS(C語言)_第2頁
操作系統(tǒng) 先來先服務(wù)算法FCFS(C語言)_第3頁
操作系統(tǒng) 先來先服務(wù)算法FCFS(C語言)_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、實(shí) 驗 報 告題目名稱C語言實(shí)現(xiàn)調(diào)度算法程序設(shè)計實(shí)驗報告-先來先服務(wù)FCFS院系 a班級 完成時間 指導(dǎo)老師 本次實(shí)驗成績主要原理及所參考的資料算法原理:設(shè)計程序模擬進(jìn)程的先來先服務(wù)FCFS過程。假設(shè)有n個進(jìn)程分別在T1, ,Tn時刻到達(dá)系統(tǒng),它們需要的服務(wù)時間分別為S1, ,Sn。分別采用先來先服務(wù)FCFS調(diào)度算法進(jìn)行調(diào)度,計算每個進(jìn)程的完成時間,周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間,并且統(tǒng)計n個進(jìn)程的平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間。程序要求如下:1)進(jìn)程個數(shù)n;每個進(jìn)程的到達(dá)時間T1, ,Tn和服務(wù)時間S1, ,Sn。2)要求采用先來先服務(wù)FCFS調(diào)度進(jìn)程運(yùn)行,計算每個進(jìn)程的周轉(zhuǎn)時間,帶權(quán)周轉(zhuǎn)時間,并且

2、計算所有進(jìn)程的平均周轉(zhuǎn)時間,帶權(quán)平均周轉(zhuǎn)時間;3)輸出:要求模擬整個調(diào)度過程,輸出每個時刻的進(jìn)程運(yùn)行狀態(tài),如“時刻3:進(jìn)程B開始運(yùn)行”等等;4)輸出:要求輸出計算出來的每個進(jìn)程的周轉(zhuǎn)時間,帶權(quán)周轉(zhuǎn)時間,所有進(jìn)程的平均周轉(zhuǎn)時間,帶權(quán)平均周轉(zhuǎn)時間。主要參考書:計算機(jī)操作系統(tǒng)第三版 西安電子科技大學(xué)出版社 湯小丹主編主要算法具體實(shí)驗步驟實(shí)現(xiàn)提示:用C語言實(shí)現(xiàn)提示:1)程序中進(jìn)程調(diào)度時間變量描述如下:static int MaxNum=100;int ArrivalTimeMaxNum;int ServiceTimeMaxNum;int FinishTimeMaxNum;int WholeTimeMa

3、xNum;double WeightWholeTimeMaxNum;double AverageWT_FCFS; double AverageWWT_FCFS;2)進(jìn)程調(diào)度的實(shí)現(xiàn)過程如下: 變量初始化; 接收用戶輸入n,T1, ,Tn,S1, ,Sn; 按照選擇算法進(jìn)行進(jìn)程調(diào)度,計算進(jìn)程的完成時間、周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間; 計算所有進(jìn)程的平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間; 按格式輸出調(diào)度結(jié)果。實(shí)驗要求1. 程序流程圖P=HEAD ; i=0P=Q;P=P-NEXT;P=P-NEXT;Q-STARTTIME=TIMEQ-STATE=T 開始i+;輸出執(zhí)行進(jìn)程信息結(jié)束P-STATE=F?Q-ARRI

4、VETIME TIME?i STARTTIME=ARRIVETIMEQ-STATE=T YNYNNY2. 程序源代碼#includestdio.h#includestdlib.htypedef struct PCB /定義進(jìn)程控制塊 char name10; /進(jìn)程名char state; /運(yùn)行狀態(tài)int ArriveTime; /到達(dá)時間int StartTime; /進(jìn)程開始時間int FinishTime; /進(jìn)程結(jié)束時間int ServiceTime; /服務(wù)時間float WholeTime;/周轉(zhuǎn)時間float WeightWholeTime;/帶權(quán)周轉(zhuǎn)時間double Aver

5、ageWT_FCFS; /平均周轉(zhuǎn)時間double AverageWWT_FCFS;/帶權(quán)平均周轉(zhuǎn)時間struct PCB *next; /指向下個進(jìn)程pcb;double x=0,y=0;int i;int time; /計時器int n; /進(jìn)程個數(shù)pcb *head=NULL,*p,*q; /進(jìn)程鏈表指針void run_FCFS(pcb *p1) /運(yùn)行未完成的進(jìn)程time = p1-ArriveTime time? p1-ArriveTime:time;p1-StartTime=time;printf(n時刻:%d, 當(dāng)前開始運(yùn)行作業(yè)%snn,time,p1-name);time+=

6、p1-ServiceTime;p1-state=T;p1-FinishTime=time;p1-WholeTime=p1-FinishTime-p1-ArriveTime;p1-WeightWholeTime=p1-WholeTime/p1-ServiceTime;x+=p1-WholeTime;y+=p1-WeightWholeTime;p1-AverageWT_FCFS=p1-WholeTime/n;p1-AverageWWT_FCFS=p1-WeightWholeTime/n;printf( 到達(dá)時間 開始時間 服務(wù)時間 完成時間 周轉(zhuǎn)時間 帶權(quán)周轉(zhuǎn)時間 n);printf(%6d %1

7、0d %10d %8d %10.1f %10.2f n ,p1-ArriveTime,p1-StartTime,p1-ServiceTime,p1-FinishTime,p1-WholeTime,p1-WeightWholeTime); printf(n平均周轉(zhuǎn)時間 平均帶權(quán)周轉(zhuǎn)時間 n);printf( %10.2f %10.2fn ,p1-AverageWT_FCFS,p1-AverageWWT_FCFS);void FCFS() /找到當(dāng)前未完成的進(jìn)程 int i; p=head; for(i=0;istate=F) q=p; /標(biāo)記當(dāng)前未完成的進(jìn)程 run_FCFS(q); p=p-n

8、ext; void getInfo() /獲得進(jìn)程信息并創(chuàng)建進(jìn)程int num;printf(n進(jìn)程個數(shù):);scanf(%d,&n);for(num=0;numname,&p-ArriveTime,&p-ServiceTime);if(head=NULL) head=p;q=p;time=p-ArriveTime;if(p-ArriveTime ArriveTime;q-next=p;p-StartTime=0;p-FinishTime=0;p-WholeTime=0;p-WeightWholeTime=0;p-next=NULL;p-state=F;q=p; void main()printf(先來先服務(wù)FCFS算

溫馨提示

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

評論

0/150

提交評論