




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、操作系統(tǒng)實(shí)驗(yàn)報(bào)告一實(shí)驗(yàn)題目先來先服務(wù)FCFS和短作業(yè)優(yōu)先SJF調(diào)度算法實(shí)驗(yàn)?zāi)康耐ㄟ^本次實(shí)驗(yàn),加深對(duì)進(jìn)城概念的理解,進(jìn)一步掌握對(duì)進(jìn)城狀態(tài)轉(zhuǎn)變、進(jìn)城調(diào)度策略及對(duì)系統(tǒng)性能的評(píng)價(jià)方法。實(shí)驗(yàn)內(nèi)容編程實(shí)現(xiàn)如下內(nèi)容: 1.先來先服務(wù)算法; 2.短進(jìn)程優(yōu)先算法;3.根據(jù)調(diào)度順序計(jì)算所有作業(yè)的平均周轉(zhuǎn)時(shí)間及平均帶權(quán)周轉(zhuǎn)時(shí)間。代碼如下:一、先來先服務(wù)算法代碼#include<stdio.h> #include<stdlib.h> /*author*date 2015-6-1*/ typedef struct process_FCFS float arrivetime;
2、/到達(dá)時(shí)間 float servetime; /服務(wù)時(shí)間 float finishtime; /完成時(shí)間 float roundtime; /周轉(zhuǎn)時(shí)間 float daiquantime; /帶權(quán)周轉(zhuǎn)時(shí)間 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á)時(shí)間:%f",ai.arrivetime); printf("服務(wù)時(shí)間:%f&q
4、uot;,ai.servetime); printf("完成時(shí)間:%f",ai.finishtime); printf("周轉(zhuǎn)時(shí)間:%f",ai.roundtime); printf("帶權(quán)周轉(zhuǎn)時(shí)間:%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("請(qǐng)輸入有幾個(gè)進(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á)時(shí)間 int run_time; /服務(wù)時(shí)間;float fcfs(pcb pro,int n) struct pcb temp; int i,j,k; /time為當(dāng)前時(shí)間 float weight_time=0,time=0; /記錄周轉(zhuǎn)時(shí)間的和 /temp=(pcb)mallo
8、c(sizeof(pcb); cout<<"進(jìn)程調(diào)度情況如下:"<<endl; cout<<"進(jìn)程號(hào) 到達(dá)時(shí)間 服務(wù)時(shí)間 周轉(zhuǎn)時(shí)間:"<<endl; /選擇排序過程,按到達(dá)時(shí)間升序排列 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個(gè)進(jìn)程的周轉(zhuǎn)時(shí)間 cout<<proi.pno<<" "<<e_time<<" "<<proi.run_time<<" "<<(e_time)/proi.run_time<<endl; return w
10、eight_time/=n; /返回平均帶權(quán)周轉(zhuǎn)時(shí)間 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)度第一個(gè)到達(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è)置一個(gè)較大的閾值, for(i=0;i<n;i+) /找到一個(gè)未被訪問的,作業(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)度一個(gè)作業(yè),count減1 return weight_time/=n; void main() pcb pro5='C',2,5,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)防保健科個(gè)人工作計(jì)劃
- 科學(xué)實(shí)驗(yàn)與操作技能培養(yǎng)計(jì)劃
- 重要場(chǎng)所安保部署的創(chuàng)新思路計(jì)劃
- 理財(cái)產(chǎn)品選擇的注意事項(xiàng)計(jì)劃
- 教學(xué)工作過程管理計(jì)劃
- 護(hù)理文書書寫規(guī)范課件
- 玻璃架空施工方案
- 機(jī)械工程基礎(chǔ)知識(shí)點(diǎn)測(cè)試卷集
- 華為員工培訓(xùn)計(jì)劃
- 品牌營銷策略制定及執(zhí)行效果評(píng)估方法探討
- 《CSCO腫瘤相關(guān)性貧血臨床實(shí)踐指南(2024)》解讀
- 24.1.4-圓周角-第1課時(shí)說課課件-
- 早產(chǎn)臨床防治指南(2024版)解讀
- 買車掛別人名下協(xié)議書范本
- A型肉毒素注射美容記錄
- 關(guān)于計(jì)算機(jī)發(fā)展及未來發(fā)展趨勢(shì)的論文
- 眼的胚胎發(fā)育課件
- 江蘇省連云港市七校2023-2024學(xué)年高一下學(xué)期期中聯(lián)考數(shù)學(xué)試題
- 研發(fā)策略設(shè)計(jì)案例分析報(bào)告
- 小學(xué)生船舶知識(shí)課件
- (高清版)DZT 0004-2015 重力調(diào)查技術(shù)規(guī)范(150 000)
評(píng)論
0/150
提交評(píng)論