作業(yè)調(diào)度模擬程序_第1頁
作業(yè)調(diào)度模擬程序_第2頁
作業(yè)調(diào)度模擬程序_第3頁
作業(yè)調(diào)度模擬程序_第4頁
作業(yè)調(diào)度模擬程序_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

作業(yè)調(diào)度模擬程序一、目的和要求1.實驗?zāi)康?1)加深對作業(yè)調(diào)度算法的理解;(2)進行程序設(shè)計的訓練。2.實驗要求用高級語言編寫一個或多個作業(yè)調(diào)度的模擬程序。單道批處理系統(tǒng)的作業(yè)調(diào)度程序。作業(yè)一投入運行,它就占有計算機的一切資源直到作業(yè)完成為止,因此調(diào)度作業(yè)時不必考慮它所需要的資源是否得到滿足,它所運行的時間等因素。作業(yè)調(diào)度算法:1)采用先來先服務(wù)(FCFS)調(diào)度算法,即按作業(yè)到達的先后次序進行調(diào)度??偸鞘紫日{(diào)度在系統(tǒng)中等待時間最長的作業(yè)。短作業(yè)優(yōu)先(SJF)調(diào)度算法,優(yōu)先調(diào)度要求運行時間最短的作業(yè)。3)響應(yīng)比高者優(yōu)先(HRRN)調(diào)度算法,為每個作業(yè)設(shè)置一個優(yōu)先權(quán)(響應(yīng)比),調(diào)度之前先計算各作業(yè)的優(yōu)先權(quán),優(yōu)先數(shù)高者優(yōu)先調(diào)度。RP(響應(yīng)比)=作業(yè)周轉(zhuǎn)時間/作業(yè)運行時間=1+作業(yè)等待時間/作業(yè)運行時間每個作業(yè)由一個作業(yè)控制塊JCB表示,JCB可以包含以下信息:作業(yè)名、提交(到達)時間、所需的運行時間、所需的資源、作業(yè)狀態(tài)、鏈指針等等。作業(yè)的狀態(tài)可以是等待W(Wait)、運行R(Run)和完成F(Finish)三種之一。每個作業(yè)的最初狀態(tài)都是等待W。模擬數(shù)據(jù)的生成允許用戶指定作業(yè)的個數(shù)(2-24),默認值為5。允許用戶選擇輸入每個作業(yè)的到達時間和所需運行時間。(**)從文件中讀入以上數(shù)據(jù)。(**)也允許用戶選擇通過偽隨機數(shù)指定每個作業(yè)的到達時間(0-30)和所需運行時間(1-8)。模擬程序的功能按照模擬數(shù)據(jù)的到達時間和所需運行時間,執(zhí)行FCFS,SJF和HRRN調(diào)度算法,程序計算各作業(yè)的開始執(zhí)行時間,各作業(yè)的完成時間,周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間(周轉(zhuǎn)系數(shù))。動態(tài)演示每調(diào)度一次,更新現(xiàn)在系統(tǒng)時刻,處于運行狀態(tài)和等待各作業(yè)的相應(yīng)信息(作業(yè)名、到達時間、所需的運行時間等)對于HRRN算法,能在每次調(diào)度時顯示各作業(yè)的響應(yīng)比R情況。(**)允許用戶在模擬過程中提交新作業(yè)。(**)編寫并調(diào)度一個多道程序系統(tǒng)的作業(yè)調(diào)度模擬程序。只要求作業(yè)調(diào)度算法:采用基于先來先服務(wù)的調(diào)度算法。對于多道程序系統(tǒng),要假定系統(tǒng)中具有的各種資源及數(shù)量、調(diào)度作業(yè)時必須考慮到每個作業(yè)的資源要求。模擬數(shù)據(jù)結(jié)果分析對同一個模擬數(shù)據(jù)各算法的平均周轉(zhuǎn)時間,周轉(zhuǎn)系數(shù)比較。(**)用曲線圖或柱形圖表示出以上數(shù)據(jù),分析算法的優(yōu)點和缺點。四、實驗準備序號準備內(nèi)容完成情況1什么是作業(yè)?2一個作業(yè)具備什么信息?3為了方便模擬調(diào)度過程,作業(yè)使用什么方式的數(shù)據(jù)結(jié)構(gòu)存放和表示?JCB4操作系統(tǒng)中,常用的作業(yè)調(diào)度算法有哪些?5如何編程實現(xiàn)作業(yè)調(diào)度算法?6模擬程序的輸入如何設(shè)計更方便、結(jié)果輸出如何呈現(xiàn)更好?五、其他要求完成報告書,內(nèi)容完整,規(guī)格規(guī)范。實驗須檢查,回答實驗相關(guān)問題。注:帶**號的條目表示選做內(nèi)容。二、實驗內(nèi)容根據(jù)指定的實驗課題,完成設(shè)計、編碼和調(diào)試工作,完成實驗報告。三、實驗環(huán)境可以采用TC,也可以選用Windows下的利用各種控件較為方便的VB,VC等可視化環(huán)境。也可以自主選擇其他實驗環(huán)境。四、實驗原理及核心算法參考程序段單道FCFS算法:

源代碼#include<stdio.h>#include<string.h>structjob{charstatus;charname[10];floatarrtime;floatreqtime;floatstartime;floatfinitime;floatzhouzhuan;};voidFCFS(jobjobs口,inttemp[100],intjobnum);//先到先服務(wù)算法voidSJF(jobjobs[10],intjobnum);//短作業(yè)優(yōu)先算法voidHRRF(jobjobs[10],intjobnum);//最高響應(yīng)比優(yōu)先算法intmain(void){jobjobs[10];intjobnum,i;inttemp[100];intx,y;intk=0;intchoice=1;printf("********************\n");printf("1.FCFS算法調(diào)度\n");printf("2.SJF算法調(diào)度\n");printf("3.HRRF算法調(diào)度\n");printf("4.調(diào)用系統(tǒng)清屏\n");printf("0.退出算法調(diào)度\n");printf("版權(quán)所有:紀焓\n");printf("********************\n");printf("請輸入作業(yè)調(diào)度個數(shù):");scanf("%d",&jobnum);for(i=0;i<jobnum;i++){printf("第%d個作業(yè):\n",i+1);printf("作業(yè)%d名稱:",i+1);scanf("%s",&jobs[i].name);printf("到達系統(tǒng)時間:");scanf("%f",&jobs[i].arrtime);printf("CPU所需時間:");scanf("%f",&jobs[i].reqtime);temp[i]=i;}//按到達系統(tǒng)時間排序for(x=0;x<jobnum;x++){for(y=x+1;y<jobnum;y++){if(jobs[temp[x]].arrtime>jobs[y].arrtime){k=temp[x];temp[x]=temp[y];temp[y]=k;}printf("\n");口廠皿土£"按到達系統(tǒng)時間排序:\n");for(i=0;i<jobnum;i++){printf("\tname\tarrtime\treqtime\n");printf("N%d",i+1);printf("\t%s",jobs[temp[i]].name);printf("\t%.2f",jobs[temp[i]].arrtime);printf("\t%.2f",jobs[temp[i]].reqtime);printf("\n");}//調(diào)用先到先服務(wù)算法//FCFS(jobs,temp,jobnum);//調(diào)用短作業(yè)優(yōu)先算法//SJF(jobs,jobnum);while(choice!=0){printf("請選擇菜單項:");scanf("%d",&choice);if(choice==1){FCFS(jobs,temp,jobnum);}elseif(choice==2){SJF(jobs,jobnum);}elseif(choice==3){HRRF(jobs,jobnum);}}return0;}/*先到先服務(wù)算法*/voidFCFS(jobjobs[10],inttemp[100],intjobnum){inti=0;jobs[temp[0]].startime=jobs[temp[0]].arrtime;jobs[temp[0]].finitime=jobs[temp[0]].arrtime+jobs[temp[0]].reqtime;jobs[temp[0]].zhouzhuan=jobs[temp[0]].finitime-jobs[temp[0]].arrtime;for(i=1;i<jobnum;i++){jobs[temp[i]].startime=jobs[temp[i-1]].finitime;jobs[temp[i]].finitime=jobs[temp[i]].startime+jobs[temp[i]].reqtime;jobs[temp[i]].zhouzhuan=jobs[temp[i]].finitime-jobs[temp[i]].arrtime;}printf("\n\n");printf("調(diào)用先到先服務(wù)算法:\n\n");printf("作業(yè)名到達系統(tǒng)時間CPU所需時間/h開始時間結(jié)束時間周轉(zhuǎn)時間/h\n");for(i=0;i<jobnum;i++){printf("%s",jobs[temp[i]].name);printf("%.2f",jobs[temp[i]].arrtime);printf("%.2f",jobs[temp[i]].reqtime);printf("%.2f",jobs[temp[i]].startime);printf("%.2f",jobs[temp[i]].finitime);printf("%.2f",jobs[temp[i]].zhouzhuan);printf("\n");}}/*短作業(yè)優(yōu)先算法*/voidSJF(jobjobs[10],intjobnum){inti,j;intk=0;inttempS[100];for(i=0;i<jobnum;i++){tempS[i]=i;}for(i=0;i<jobnum;i++){for(j=i+1;j<jobnum;j++){if(jobs[tempS[i]].reqtime>jobs[j].reqtime){k=tempS[i];tempS[i]=tempS[j];tempS[j]=k;jobs[tempS[0]].startime=jobs[tempS[0]].arrtime;jobs[tempS[0]].finitime=jobs[tempS[0]].arrtime+jobs[tempS[0]].reqtime;jobs[tempS[0]].zhouzhuan=jobs[tempS[0]].finitime-jobs[tempS[0]].arrtime;for(i=l;i<jobnum;i++)(jobs[tempS[i]].startime=jobs[tempS[i-1]].finitime;jobs[tempS[i]].finitime=jobs[tempS[i]].startime+jobs[tempS[i]].reqtime;jobs[tempS[i]].zhouzhuan=jobs[tempS[i]].finitime-jobs[tempS[i]].arrtime;)printf(〃\n\n〃);printf(〃調(diào)用最短作業(yè)優(yōu)先算法:\n\n〃);printf(〃作業(yè)名到達系統(tǒng)時間CPU所需時間/h開始時間結(jié)束時間周轉(zhuǎn)時間/h\n〃);for(i=0;i<jobnum;i++)(printf(〃%s〃,jobs[tempS[i]].name);printf(〃%.2f〃,jobs[tempS[i]].arrtime);printf(〃%.2f〃,jobs[tempS[i]].reqtime);printf(〃%.2f〃,jobs[tempS[i]].startime);printf(〃%.2f〃,jobs[tempS[i]].finitime);printf(〃%.2f〃,jobs[tempS[i]].zhouzhuan);printf(〃\n〃);)}/*最高響應(yīng)比優(yōu)先算法*/voidHRRF(jobjobs[10],intjobnum)(}由運行截圖輸入1使用先到先服務(wù)算法輸入輸入2使用短作業(yè)優(yōu)先算法??E;傅作森婉讀七Debuq\2,exe",FCF£算法調(diào)度或間1=^-也相和寓業(yè)稱潮箭亞稱充營%急需作強以需作到將需理糕庠壕所個去斤個數(shù)門2-:3亞達明w業(yè)達嘛3-■■2b用”b、-j—司■I■——--—日才,nariec:narieanarie1-■■4*ai'i'tine1.00ai'i'tine2.00ai'i'tine3.00i'eqtine4.00i'eqtine3.00i'eqtine2.00到達系統(tǒng)時I用1.002.幽3.00CPU所需時間4.003.002.00開始時間1.0S00H軻■■585n束時閭周轉(zhuǎn)時間/人5.^04.008.006.的1S.S07.00輸入輸入0退出調(diào)度算法程序0-02-:3看入0-03-二Z1可.”b1「可--4UJ..———裝算有退權(quán)此版_fk業(yè)新翻肘業(yè)新型的業(yè)稱制肘3善需作蓄需作差需智部探理駢?崎請兼到CF第柞到81到80-01-■■4*匕恫B1:--.:4UJ...—按到達系統(tǒng)時間排序二namecnameAnamebarptine1.00arptine2.00arptine3.00peqtine4.00peqtine3.00peqtine2.00CZI唐選擇菜單項二:L調(diào)用先到先服務(wù)算法二作業(yè)名到達系統(tǒng)時間c:a1.泗之.泗3.^CPU所需時間/k4.003,302開始時間1.0S6.說結(jié)束時間5-0E;穹一舊回周轉(zhuǎn)時間加7.0H清選擇菜單項22調(diào)用最短作業(yè)優(yōu)先算法二作業(yè)名到達系統(tǒng)時間Sic之.泗1.泗CPU所需時間/k2,003,加4.00開始時間3-0E;6.說結(jié)束時間5-0E;穹一舊回12.回回周轉(zhuǎn)時間加2.叵舊6.舊回11.0S請選擇菜單項,,回謔作親筑母院二審\0ebugV.eM&"0■3■■間:00■3■■間:0-03-:2bln可.:4nJ..———0-01-■■4*仁旭B]:JH-業(yè)稱和爪-業(yè)稱出iH「叫周業(yè)達嘮3-1業(yè)達崎GP第作到GP第作到CP胺到達系統(tǒng)時間排序二c:品naneb清選擇菜單項這c:品naneb清選擇菜單項這api'time1.HE4api'time2.HE4ari'time3.8E

溫馨提示

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

評論

0/150

提交評論