操作系統(tǒng)作業(yè)調(diào)度實驗報告_第1頁
操作系統(tǒng)作業(yè)調(diào)度實驗報告_第2頁
操作系統(tǒng)作業(yè)調(diào)度實驗報告_第3頁
操作系統(tǒng)作業(yè)調(diào)度實驗報告_第4頁
操作系統(tǒng)作業(yè)調(diào)度實驗報告_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗二作業(yè)調(diào)度實驗題目1、編寫并調(diào)試一個單道處理系統(tǒng)的作業(yè)等待模擬程序。作業(yè)調(diào)度算法:分別采用先來先服務(wù)(FCFS),最短作業(yè)優(yōu)先(SJF)的調(diào)度算法。(1)先來先服務(wù)算法:按照作業(yè)提交給系統(tǒng)的先后順序來挑選作業(yè),先提交的先被挑選。(2)最短作業(yè)優(yōu)先算法:是以進(jìn)入系統(tǒng)的作業(yè)所提出的“執(zhí)行時間”為標(biāo)準(zhǔn),總是優(yōu)先選取執(zhí)行時間最短的作業(yè)。實驗?zāi)康模罕緦嶒炓笥酶呒壵Z言(C語言實驗環(huán)境)編寫和調(diào)試一個或多個作業(yè)調(diào)度的模擬程序,了解作業(yè)調(diào)度在操作系統(tǒng)中的作用,以加深對作業(yè)調(diào)度算法的理解三.實驗過程<一>單道處理系統(tǒng)作業(yè)調(diào)度1)單道處理程序作業(yè)調(diào)度實驗的源程序:zuoye.c執(zhí)行程序:zuoye.exe2)實驗分析:1、由于在單道批處理系統(tǒng)中,作業(yè)一投入運行,它就占有計算機的一切資源直到作業(yè)完成為止,因此調(diào)度作業(yè)時不必考慮它所需要的資源是否得到滿足,它所占用的CPU時限等因素。2、每個作業(yè)由一個作業(yè)控制塊JCB表示,JCB可以包含如下信息:作業(yè)名、提交時間、所需的運行時間、所需的資源、作業(yè)狀態(tài)、鏈指針等等。作業(yè)的狀態(tài)可以是等待W(Wait)、運行R(Run)和完成F(Finish)三種狀態(tài)之一。每個作業(yè)的最初狀態(tài)總是等待W。3、對每種調(diào)度算法都要求打印每個作業(yè)開始運行時刻、完成時刻、周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間,以及這組作業(yè)的平均周轉(zhuǎn)時間及帶權(quán)平均周轉(zhuǎn)時間。3)流程圖:代替代替二.最短作業(yè)優(yōu)先算法代替代替三.高響應(yīng)比算法

圖一.先來先服務(wù)流程圖4)源程序:#include<stdio.h>#include<stdlib.h>#include<conio.h>#definegetpch(type)(type*)malloc(sizeof(type))#defineNULL0intn;floatT1=0,T2=0;inttimes=0;structjcb//作業(yè)控制塊{charname[10];//作業(yè)名intreachtime;//作業(yè)到達(dá)時間intstarttime;//作業(yè)開始時間intneedtime;//作業(yè)需要運行的時間floatsuper;//作業(yè)的響應(yīng)比intfinishtime;//作業(yè)完成時間floatcycletime;//作業(yè)周轉(zhuǎn)時間floatcltime;//作業(yè)帶權(quán)周轉(zhuǎn)時間charstate;//作業(yè)狀態(tài)structjcb*next;//結(jié)構(gòu)體指針}*ready=NULL,*p,*q;typedefstructjcbJCB;voidinize()//初始化界面voidsuper()//計算隊列中作業(yè)的高響應(yīng)比{JCB*padv;padv=ready;do{if(padv->state=='W'&&padv->reachtime<=times)padv->super=(float)(times-padv->reachtime+padv->needtime)/padv->needtimepadv=padv->next;}while(padv!=NULL);}voidfinal()//最后打印作業(yè)的平均周轉(zhuǎn)時間,平均帶權(quán)周轉(zhuǎn)時間{floats,t;t=T1/n;s=T2/n;getch();printf("\n\n作業(yè)已經(jīng)全部完成!");printf("\n%d個作業(yè)的平均周轉(zhuǎn)時間是:%f",n,t);printf("\n%d個作業(yè)的平均帶權(quán)周轉(zhuǎn)時間是%f:\n\n\n",n,s);}voidhrn(intm)//高響應(yīng)比算法{JCB*min;inti,iden;system("cls");inital();for(i=0;i<n;i++){p=min=ready;iden=1;super();do{if(p->state=='W'&&p->reachtime<=times)if(iden){min=p;iden=0;}elseif(p->super>min->super)min=p;p=p->next;}while(p!=NULL);if(iden){i--;times++;//printf("\ntime=%d:\tnoJCBsubmib...wait...",time);if(times>1000){printf("\nruntimeistoolong...error...");getch();}}else{running(min,m);//調(diào)用running()函數(shù)}}//forfinal();//調(diào)用running()函數(shù)}voidsjf(intm)//最短作業(yè)優(yōu)先算法{JCB*min;inti,iden;system("cls");inital();for(i=0;i<n;i++){p=min=ready;iden=1;do{if(p->state=='W'&&p->reachtime<=times)if(iden){min=p;iden=0;}elseif(p->needtime<min->needtime)min=p;p=p->next;}while(p!=NULL);if(iden){i--;//printf("\ntime=%d:\tnoJCBsubmib...wait...",time);times++;if(times>100){printf("\nruntimeistoolong...error");getch();}}else{running(min,m);//調(diào)用running()函數(shù)}}//forfinal();//調(diào)用running()函數(shù)}voidfcfs(intm)//先來先服務(wù)算法{inti,iden;system("cls");inital();for(i=0;i<n;i++){p=ready;iden=1;do{if(p->state=='W'&&p->reachtime<=times)iden=0;if(iden)p=p->next;}while(p!=NULL&&iden);if(iden){i--;printf("\n沒有滿足要求的進(jìn)程,需等待");times++;if(times>100){printf("\n時間過長");getch();}}else{running(p,m);//調(diào)用running()函數(shù)}}final();//調(diào)用running()函數(shù)}voidmune(){intm;system("cls");printf("\n\n\t\t*********************************************\t\t\n");printf("\t\t\t\t作業(yè)調(diào)度演示\n");printf("\t\t*********************************************\t\t\n");printf("\n\n\n\t\t\t1.先來先服務(wù)算法.");printf("\n\t\t\t2.最短作業(yè)優(yōu)先算法.");printf("\n\t\t\t3.響應(yīng)比高者優(yōu)先算法");printf("\n\t\t\t0.退出程序.");printf("\n\n\t\t\t\t選擇所要操作:");scanf("%d",&m);switch(m){case1:fcfs(m);getch();system("cls");mune();break;case2:sjf(m);getch();system("cls");mune();break;case3:hrn(m);getch();system("cls");mune();break;case0:system("cls");break;default:printf("選擇錯誤,重新選擇.");getch();system("cls");mu

溫馨提示

  • 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

提交評論