操作系統(tǒng)實驗一先來先服務(wù)FCFS和短作業(yè)優(yōu)先SJF調(diào)度算法_第1頁
操作系統(tǒng)實驗一先來先服務(wù)FCFS和短作業(yè)優(yōu)先SJF調(diào)度算法_第2頁
操作系統(tǒng)實驗一先來先服務(wù)FCFS和短作業(yè)優(yōu)先SJF調(diào)度算法_第3頁
操作系統(tǒng)實驗一先來先服務(wù)FCFS和短作業(yè)優(yōu)先SJF調(diào)度算法_第4頁
操作系統(tǒng)實驗一先來先服務(wù)FCFS和短作業(yè)優(yōu)先SJF調(diào)度算法_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)實驗報告一實驗題目先來先服務(wù)FCFS和短作業(yè)優(yōu)先SJF調(diào)度算法實驗?zāi)康耐ㄟ^本次實驗,加深對進(jìn)城概念的理解,進(jìn)一步掌握對進(jìn)城狀態(tài)轉(zhuǎn)變、進(jìn)城調(diào)度策略及對系統(tǒng)性能的評價方法。實驗內(nèi)容編程實現(xiàn)如下內(nèi)容: 1.先來先服務(wù)算法; 2.短進(jìn)程優(yōu)先算法;3.根據(jù)調(diào)度順序計算所有作業(yè)的平均周轉(zhuǎn)時間及平均帶權(quán)周轉(zhuǎn)時間。代碼如下:一、先來先服務(wù)算法代碼#include<stdio.h> #include<stdlib.h> /*author*date 2015-6-1*/ typedef struct process_FCFS float arrivetime;

2、/到達(dá)時間 float servetime; /服務(wù)時間 float finishtime; /完成時間 float roundtime; /周轉(zhuǎn)時間 float daiquantime; /帶權(quán)周轉(zhuǎn)時間 struct process_FCFS *link; /結(jié)構(gòu)體指針 FCFS; FCFS *p,*q,*head=NULL; struct process_FCFS a100; struct process_FCFS *sortarrivetime(struct process_FCFS a,int n) int i,j; struct process_FCFS t; int flag; f

3、or(i=1;i<n;i+) flag=0; for(j=0;j<n-i;j+) if(aj.arrivetime>aj+1.arrivetime) t=aj; aj=aj+1; aj+1=t; flag=1; if(flag=0)/如果排序中沒發(fā)生任何交換,則結(jié)束 break; return a; /先來先服務(wù)算法 void print(struct process_FCFS a,int n) int i; for(i=0;i<n;i+) printf("到達(dá)時間:%f",ai.arrivetime); printf("服務(wù)時間:%f&q

4、uot;,ai.servetime); printf("完成時間:%f",ai.finishtime); printf("周轉(zhuǎn)時間:%f",ai.roundtime); printf("帶權(quán)周轉(zhuǎn)時間:%f",ai.daiquantime); printf("n"); void Fcfs(struct process_FCFS a,int n) int i; a0.finishtime=a0.arrivetime+a0.servetime; a0.roundtime=a0.finishtime+a0.arriveti

5、me; a0.daiquantime=a0.roundtime/a0.servetime; for(i=0;i<n;i+) if(ai.arrivetime<ai-1.finishtime) ai.finishtime=ai-1.finishtime+ai.servetime; ai.roundtime=ai.finishtime-ai.arrivetime; ai.daiquantime=ai.roundtime/ai.servetime; else ai.finishtime=ai.arrivetime+ai.servetime; ai.roundtime=ai.finisht

6、ime-ai.arrivetime; ai.daiquantime=ai.roundtime/ai.servetime; printf("先來先服務(wù)n"); print(a,n); void main() int n,i; printf("請輸入有幾個進(jìn)程n"); scanf("%d",&n); for(i=0;i<n;i+) printf("arrivetime"); scanf("%f",&ai.arrivetime); printf("servetime&q

7、uot;); scanf("%f",&ai.servetime); Fcfs(a,n); 二、短作業(yè)優(yōu)先算法代碼#include<iostream.h>#include<stdio.h>struct pcb char pno; int come_time; /到達(dá)時間 int run_time; /服務(wù)時間;float fcfs(pcb pro,int n) struct pcb temp; int i,j,k; /time為當(dāng)前時間 float weight_time=0,time=0; /記錄周轉(zhuǎn)時間的和 /temp=(pcb)mallo

8、c(sizeof(pcb); cout<<"進(jìn)程調(diào)度情況如下:"<<endl; cout<<"進(jìn)程號 到達(dá)時間 服務(wù)時間 周轉(zhuǎn)時間:"<<endl; /選擇排序過程,按到達(dá)時間升序排列 for(i=0;i<n-1;i+) k=i; for(j=i+1;j<n;j+) if(e_time>e_time) k=j; if(k!=i) temp=proi; proi=prok; prok=temp; for(i=0;i<n;i+) time+=proi.ru

9、n_time; weight_time+=(e_time)/proi.run_time; /(e_time)/proi.run_time為排序后第i個進(jìn)程的周轉(zhuǎn)時間 cout<<proi.pno<<" "<<e_time<<" "<<proi.run_time<<" "<<(e_time)/proi.run_time<<endl; return w

10、eight_time/=n; /返回平均帶權(quán)周轉(zhuǎn)時間 void insert(pcb pro,pcb pro1,int start,int end)/將一pcb類型的元素插入到有序數(shù)組中,最后還保持有序 int i=end; while(i-)>start) if(proi.run_time>pro1.run_time)proi+1=proi; proi=pro1; float sjp(pcb pro,int n) int i,first=0,count,flag20,k,min; float time=0,weight_time=0;/調(diào)度第一個到達(dá)內(nèi)存的進(jìn)程 for(i=1;i

11、<n;i+) if(e_time>e_time) first=i; flagi=0; flagfirst=1; time=(float)profirst.run_time; weight_time=1; cout<<profirst.pno<<" "<<e_time<<" "<<profirst.run_time<<" "<<weight_time<<endl; /

12、pro_temp0=profirst; count=n-1; while(count) k=0; min=32767; /設(shè)置一個較大的閾值, for(i=0;i<n;i+) /找到一個未被訪問的,作業(yè)較短的且已經(jīng)到達(dá)內(nèi)存的作業(yè)調(diào)度 if(i!=first)&&(flagi=0)&&(time>=e_time)&&(min>proi.run_time) k=i; min=proi.run_time; flagk=1; /訪問后置標(biāo)記為訪問 time+=prok.run_time; weight_time+=(ti

13、e_time)/prok.run_time; cout<<prok.pno<<" "<<e_time<<" "<<prok.run_time<<" "<<(e_time)/prok.run_time<<endl; count-; /每調(diào)度一個作業(yè),count減1 return weight_time/=n; void main() pcb pro5='C',2,5,

溫馨提示

  • 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

提交評論