操作系統(tǒng) 先來先服務(wù)算法FCFSC語言_第1頁
操作系統(tǒng) 先來先服務(wù)算法FCFSC語言_第2頁
操作系統(tǒng) 先來先服務(wù)算法FCFSC語言_第3頁
操作系統(tǒng) 先來先服務(wù)算法FCFSC語言_第4頁
操作系統(tǒng) 先來先服務(wù)算法FCFSC語言_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

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

2、計算所有進程的平均周轉(zhuǎn)時間,帶權(quán)平均周轉(zhuǎn)時間;3)輸出:要求模擬整個調(diào)度過程,輸出每個時刻的進程運行狀態(tài),如“時刻3:進程B開始運行”等等;4)輸出:要求輸出計算出來的每個進程的周轉(zhuǎn)時間,帶權(quán)周轉(zhuǎn)時間,所有進程的平均周轉(zhuǎn)時間,帶權(quán)平均周轉(zhuǎn)時間。主要參考書:計算機操作系統(tǒng)第三版 西安電子科技大學(xué)出版社 湯小丹主編主要算法具體實驗步驟實現(xiàn)提示:用C語言實現(xiàn)提示:1)程序中進程調(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)進程調(diào)度的實現(xiàn)過程如下:Ø 變量初始化;Ø 接收用戶輸入n,T1, ,Tn,S1, ,Sn;Ø 按照選擇算法進行進程調(diào)度,計算進程的完成時間、周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間;Ø 計算所有進程的平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間;Ø 按格式輸出調(diào)度結(jié)果。實驗要求1. 程序流程圖P=HEAD ; i=0P=Q;P=P->NEXT;P=P->NEXT;Q->STARTTIME=TIM

4、EQ->STATE=T 開始i+;輸出執(zhí)行進程信息結(jié)束P->STATE=F?Q->ARRIVETIME > TIME?i < n ?Q->STARTTIME=ARRIVETIMEQ->STATE=T YNYNNY2. 程序源代碼#include"stdio.h"#include"stdlib.h"typedef struct PCB /定義進程控制塊 char name10; /進程名char state; /運行狀態(tài)int ArriveTime; /到達時間int StartTime; /進程開始時間int F

5、inishTime; /進程結(jié)束時間int ServiceTime; /服務(wù)時間float WholeTime;/周轉(zhuǎn)時間float WeightWholeTime;/帶權(quán)周轉(zhuǎn)時間double AverageWT_FCFS; /平均周轉(zhuǎn)時間double AverageWWT_FCFS;/帶權(quán)平均周轉(zhuǎn)時間struct PCB *next; /指向下個進程pcb;double x=0,y=0;int i;int time; /計時器int n; /進程個數(shù)pcb *head=NULL,*p,*q; /進程鏈表指針void run_FCFS(pcb *p1) /運行未完成的進程time = p1-&

6、gt;ArriveTime > time? p1->ArriveTime:time;p1->StartTime=time;printf("n時刻:%d, 當(dāng)前開始運行作業(yè)%snn",time,p1->name);time+=p1->ServiceTime;p1->state='T'p1->FinishTime=time;p1->WholeTime=p1->FinishTime-p1->ArriveTime;p1->WeightWholeTime=p1->WholeTime/p1->

7、ServiceTime;x+=p1->WholeTime;y+=p1->WeightWholeTime;p1->AverageWT_FCFS=p1->WholeTime/n;p1->AverageWWT_FCFS=p1->WeightWholeTime/n;printf(" 到達時間 開始時間 服務(wù)時間 完成時間 周轉(zhuǎn)時間 帶權(quán)周轉(zhuǎn)時間 n");printf("%6d %10d %10d %8d %10.1f %10.2f n ",p1->ArriveTime,p1->StartTime,p1->Se

8、rviceTime,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)前未完成的進程 int i; p=head; for(i=0;i<n;i+) if(p->state='F') q=p; /標記當(dāng)前未完成的進程 run_FC

9、FS(q); p=p->next; void getInfo() /獲得進程信息并創(chuàng)建進程int num;printf("n進程個數(shù):");scanf("%d",&n);for(num=0;num<n;num+)p=(pcb *)malloc(sizeof(pcb);printf("依次輸入:n進程名 到達時間 服務(wù)時間n");scanf("%st%dt%d",&p->name,&p->ArriveTime,&p->ServiceTime);if(head=NULL) head=p;q=p;time=p->ArriveTime;if(p->ArriveTime < time) time=p->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 ma

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論