先來(lái)先服務(wù)算法的實(shí)現(xiàn)-報(bào)告_第1頁(yè)
先來(lái)先服務(wù)算法的實(shí)現(xiàn)-報(bào)告_第2頁(yè)
先來(lái)先服務(wù)算法的實(shí)現(xiàn)-報(bào)告_第3頁(yè)
先來(lái)先服務(wù)算法的實(shí)現(xiàn)-報(bào)告_第4頁(yè)
先來(lái)先服務(wù)算法的實(shí)現(xiàn)-報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

操作系統(tǒng)實(shí)習(xí)報(bào)告先來(lái)先服務(wù)算法的實(shí)現(xiàn)一、設(shè)計(jì)目的加深對(duì)進(jìn)程調(diào)度工作的理解,了解其優(yōu)點(diǎn)缺點(diǎn)。二、設(shè)計(jì)內(nèi)容設(shè)計(jì)一個(gè)按先來(lái)先服務(wù)算法實(shí)現(xiàn)處理器調(diào)度的程序。三、開(kāi)發(fā)環(huán)境windows環(huán)境,VC6.0平臺(tái)。四、分析設(shè)計(jì)(一)實(shí)驗(yàn)原理1.每個(gè)進(jìn)程由一個(gè)進(jìn)程控制塊來(lái)識(shí)別,進(jìn)程控制塊的內(nèi)容如下所示:進(jìn)程名到達(dá)時(shí)間服務(wù)時(shí)間開(kāi)始時(shí)間結(jié)束時(shí)間進(jìn)程名:進(jìn)程表示。到達(dá)時(shí)間:進(jìn)程創(chuàng)建時(shí)的系統(tǒng)時(shí)間或者用戶(hù)指定,調(diào)度時(shí)選擇到達(dá)時(shí)間最早的進(jìn)程。服務(wù)時(shí)間:進(jìn)程運(yùn)行所需的時(shí)間。開(kāi)始時(shí)間:進(jìn)程開(kāi)始執(zhí)行的時(shí)間。結(jié)束時(shí)間:進(jìn)程執(zhí)行結(jié)束時(shí)的時(shí)間。2.設(shè)置一個(gè)數(shù)組,用來(lái)存放進(jìn)入系統(tǒng)的進(jìn)程。3.處理機(jī)調(diào)度時(shí),總是選擇通過(guò)冒泡排序選出的到達(dá)時(shí)間靠前的進(jìn)程投入運(yùn)行。4.在所設(shè)計(jì)的程序中應(yīng)該有顯示或打印語(yǔ)句顯示或者打印正在運(yùn)行的進(jìn)程的進(jìn)程名進(jìn)程到達(dá)時(shí)間、進(jìn)程服務(wù)時(shí)間、進(jìn)程開(kāi)始執(zhí)行時(shí)間、進(jìn)程完成時(shí)間、進(jìn)程周轉(zhuǎn)時(shí)間、進(jìn)程帶權(quán)周轉(zhuǎn)時(shí)間。(二)程序結(jié)構(gòu)通過(guò)輸入函數(shù)input創(chuàng)建進(jìn)程后,送入數(shù)組中,通過(guò)冒泡排序?qū)?shù)組中各進(jìn)程的到達(dá)時(shí)間進(jìn)行排序,到達(dá)時(shí)間小的會(huì)優(yōu)先得到處理機(jī)的分配。進(jìn)行進(jìn)程調(diào)度前,進(jìn)程的各個(gè)信息如下:arriveti,serviceti,startti,finishti,zzti,dqzzti假設(shè)進(jìn)程K的到達(dá)比進(jìn)程1提前到達(dá),得到分配處理機(jī)后,通過(guò)deal函數(shù)處理:p[k].startti=p[k].arriveti;p[k].finishti=p[k].arriveti+p[k].serviceti;p[k].zzti=p[k].finishti-p[k].arriveti;p[k].dqzzti[k].zzti/p[k].serviceti;最后調(diào)用輸出函數(shù)Print()對(duì)進(jìn)程的各個(gè)信息進(jìn)行輸出。(三)數(shù)據(jù)結(jié)構(gòu)1.主函數(shù)2.進(jìn)程控制塊的內(nèi)容如下:3.創(chuàng)建進(jìn)程算法,根據(jù)輸入的個(gè)數(shù)存儲(chǔ)到數(shù)組中,創(chuàng)建時(shí)信息包括進(jìn)程名、到達(dá)時(shí)間、服 務(wù)時(shí)間,創(chuàng)建進(jìn)程后可在主函數(shù)調(diào)用FCFS()函數(shù)進(jìn)行處理。4.輸出函數(shù),輸出信息包括:進(jìn)程名、到達(dá)時(shí)間、服務(wù)時(shí)間、開(kāi)始時(shí)間、完成時(shí)間、周轉(zhuǎn)時(shí)間、帶權(quán)周轉(zhuǎn)時(shí)間以及進(jìn)程執(zhí)行順序。5.排序函數(shù),對(duì)到達(dá)時(shí)間進(jìn)行排序,對(duì)先來(lái)的進(jìn)程進(jìn)行調(diào)度6.運(yùn)行函數(shù),處理進(jìn)程開(kāi)始執(zhí)行時(shí)間、完成時(shí)間、周轉(zhuǎn)時(shí)間、帶權(quán)周轉(zhuǎn)時(shí)間。7.調(diào)用處理函數(shù)(四)程序流程圖開(kāi)始初始化進(jìn)程控制塊,讓進(jìn)程控制塊按進(jìn)程到達(dá)先后順序讓進(jìn)程排隊(duì)調(diào)度數(shù)調(diào)度數(shù)組中首個(gè)進(jìn)程,并讓數(shù)組中的下一位移到首位計(jì)算并打印進(jìn)程k的完成時(shí)刻、周轉(zhuǎn)帶權(quán)周轉(zhuǎn)時(shí)間其中:周轉(zhuǎn)時(shí)間=完成時(shí)間-到達(dá)帶權(quán)周轉(zhuǎn)時(shí)間=周轉(zhuǎn)時(shí)間務(wù)時(shí)間更改計(jì)時(shí)器的當(dāng)前時(shí)間,即下一刻進(jìn)程的當(dāng)前時(shí)間=K-1的完成時(shí)間+K的服務(wù)時(shí)間N數(shù)組為空時(shí)間開(kāi)始時(shí)間Y結(jié)束五、運(yùn)行實(shí)例與結(jié)果分析如下表,輸入一下三個(gè)進(jìn)程A、B、C作業(yè)名到達(dá)時(shí)間服務(wù)時(shí)間A14B52C25實(shí)驗(yàn)結(jié)果如下:根據(jù)先來(lái)先服務(wù)的算法,進(jìn)程A到達(dá)時(shí)間為1,服務(wù)時(shí)間為4,進(jìn)程A開(kāi)始執(zhí)行后,隨后的作業(yè)先到的就能夠排在前面,而B(niǎo)的到達(dá)時(shí)間為5,C的到達(dá)時(shí)間則為2,所以B在C之后執(zhí)行,知道執(zhí)行完。這個(gè)算法和進(jìn)程的運(yùn)行所需的時(shí)間無(wú)關(guān),只和先后到達(dá)順序有關(guān)。六、實(shí)驗(yàn)心得通過(guò)這次實(shí)習(xí),讓我對(duì)進(jìn)程作業(yè)先來(lái)先服務(wù)和進(jìn)程調(diào)度的概念和算法,有了更深入的認(rèn)識(shí)步理解了操作系統(tǒng)對(duì)于作業(yè)處理的基本思想時(shí)這次實(shí)習(xí)也是自己編程能力的一種考驗(yàn)深了理論知識(shí)的實(shí)際應(yīng)用!在實(shí)驗(yàn)的過(guò)程中遇到了很多困難,感謝同學(xué)們的幫助。七、實(shí)驗(yàn)源代碼#include<stdio.h>structfcfs{charname[10]; /進(jìn)程名floatarrivetime; /到達(dá)時(shí)間floatservicetime; /服務(wù)時(shí)間floatstarttime; /開(kāi)始時(shí)間floatfinishtime; /完成時(shí)間floatzztime; /周轉(zhuǎn)時(shí)間floatdqzztime; /帶權(quán)周轉(zhuǎn)時(shí)間};fcfsa[100];////////////入////////////////voidinput(fcfs*p,intN){inti;printf("請(qǐng)輸入進(jìn)程名 到達(dá)時(shí)間服務(wù)時(shí)間:;for(i=0;i<=N-1;i{printf("請(qǐng)輸入第%d個(gè)進(jìn)程:\n",i+1);scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].servicetime);}}////////////出////////////////voidPrint(fcfs*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,floatzztime,floatdqzztime,intN){intk;printf("運(yùn)行順序?yàn)?");printf("%s",p[0].name);for(k=1;k<N;k++){printf("-->%s",p[k].name);}printf(進(jìn)程信息如下:;printf("\nnamerrivervice\tstaniqzz;for(k=0;k<=N-1;k{printf("%-.2-.2-.2f\t%-.2-.2-.2f\t\n",p[k].name,p[k].arrivetime,p[k].servicetime,p[k].starttime,p[k].finishtime,p[k].zztime,p[k].dqzztime);}}/////////序函數(shù)////////////voidsort(fcfs*p,intN){for(inti=0;i<=N-1;i++)for(intj=0;j<=i;jif(p[i].arrivetime<p[j].arrivetime){fcfstemp;temp=p[i];p[i]=p[j];p[j]=temp;}}////////////行函數(shù)//////////voiddeal(fcfs*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,float&zztime,float&dqzztime,intN){intk;for(k=0;k<=N-1;k++){if(k==0) /第一個(gè)到達(dá)的進(jìn)程{p[k].starttime=p[k].arrivetime;p[k].finishtime=p[k].arrivetime+p[k].servicetime;}else/第一個(gè)以后到達(dá)的{p[k].starttime=p[k-1].finishtime;p[k].finishtime=p[k-1].finishtime+p[k].servicetime;}}for(k=0;k<=N-1;k++) /周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間的計(jì)算{p[k].zztime=p[k].finishtime-p[k].arrivetime;p[k].dqzztime=p[k].zztimek].servicetime;}}/////////用處理////////voidFCFS(fcfs*p,intN){floatarrivetime=0,servicetime,starttime=0,finishtime=0,zztime=0,dqzztime=0;sort(p,N);deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);Print(p,arrive

溫馨提示

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

評(píng)論

0/150

提交評(píng)論