最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

作業(yè)調(diào)度

2020-05-04 14:14 作者:喬知洛  | 我要投稿

一、實驗目的

1、?對作業(yè)調(diào)度的相關內(nèi)容作進一步的理解。

2、?明白作業(yè)調(diào)度的主要任務。

3、?通過編程掌握作業(yè)調(diào)度的主要算法。


二、實驗內(nèi)容及要求

1、對于給定的一組作業(yè), 給出其到達時間和運行時間,例如下表所示:

2、分別用先來先服務算法、短作業(yè)優(yōu)先和響應比高者優(yōu)先三種算法給出作業(yè)的調(diào)度順序。

3、計算每一種算法的平均周轉(zhuǎn)時間及平均帶權(quán)周轉(zhuǎn)時間并比較不同算法的優(yōu)劣。

?

三、實驗過程

1、程序中使用的數(shù)據(jù)結(jié)構(gòu)及符號說明

進程結(jié)構(gòu)體

{‘作業(yè)名’:’A’,’到達時間’:0,’服務時間’:6,’結(jié)束時間’:0,’周轉(zhuǎn)時間’:0,’帶權(quán)周轉(zhuǎn)時間’:0}

2、實驗程序

#include<iostream>

using namespace std;

struct works

{

char name;//作業(yè)名

double ctime;//到達時間

double stime;//服務時間

double ftime;//完成時間

double ztime;//周轉(zhuǎn)時間

double dtime;//帶權(quán)周轉(zhuǎn)時間

double wtime;//等待時間

double rratio;//響應比

};

double sumztime,sumdtime;

double avgztime,avgdtime;

void input(works *p,int n);//輸入

void output(works *p,int n);//輸出

void datap(works *p,int n);//數(shù)據(jù)處理

void sort(works *p,int n);//按到達時間排序

void fcfs(works *p,int n);//先來先服務

void sjf(works *p,int n);//短作業(yè)優(yōu)先

void hrf(works *p,int n);//高響應比優(yōu)先

?

int main()

{

int n;

cout<<"輸入作業(yè)數(shù)目: ";

cin>>n;

works *a=new works[n];

input(a,n);

fcfs(a,n);

cout<<"\n";

sjf(a,n);

cout<<"\n";

hrf(a,n);

delete a;

return 0;

}

void input(works *p,int n)

{

cout<<"請輸入作業(yè)信息: "<<endl<<endl;

for(int i=0;i<n;i++)

{

cout<<"作業(yè)名: ";

cin>>p[i].name ;

cout<<"到達時間: ";

cin>>p[i].ctime ;

cout<<"服務時間: ";

cin>>p[i].stime ;

cout<<"\n";

}

?

}

?

void datap(works *p,int n)

{

sumztime=sumdtime=0;

p[0].ftime =p[0].ctime +p[0].stime ;

for(int i=1;i<n;i++)

{

p[i].ftime=p[i-1].ftime+p[i].stime;

}

for(int j=0;j<n;j++)

{

p[j].ztime =p[j].ftime -p[j].ctime ;

p[j].dtime =p[j].ztime /p[j].stime ;

sumztime+=p[j].ztime;

sumdtime+=p[j].dtime;

}

avgztime=sumztime/n;

avgdtime=sumdtime/n;

}

?

void output(works *p,int n)

{

cout<<"作業(yè)調(diào)度順序: ";

for(int k=0;k<n;k++)

{

cout<<p[k].name ?<<" ";

}

cout<<"\n";

cout<<"平均周轉(zhuǎn)時間="<<avgztime<<endl;

cout<<"平均帶權(quán)周轉(zhuǎn)時間="<<avgdtime<<endl;

}

?

void sort(works *p,int n)

{

for(int i=n-1;i>=1;i--)

for(int j=0;j<i;j++)

if(p[j].ctime >p[j+1].ctime )

{

works temp;

temp=p[j];

p[j]=p[j+1];

p[j+1]=temp;

}

}

?

void fcfs(works *p,int n)

{

sort(p,n);

datap(p,n);

cout<<"先來先服務算法"<<endl;

output(p,n);

?

}

?

void sjf(works *p,int n)

{

sort(p,n);

for(int i=0;i<n-1;i++)

{

int k=0;

if(i==0)

p[i].ftime =p[i].ctime +p[i].stime ;

else

p[i].ftime =p[i].stime +p[i-1].ftime ;

for(int j=i+1;j<n;j++)

{

if(p[j].ctime<=p[i].ftime )

k++;

}

double minstime=p[i+1].stime ;

int ps=i+1;

for(int m=i+1;m<i+k;m++)

{

if(p[m+1].stime <minstime)

{

minstime=p[m+1].stime ;

ps=m+1;

}

}

works temp;

temp=p[i+1];

p[i+1]=p[ps];

p[ps]=temp;

}

datap(p,n);

cout<<"短作業(yè)優(yōu)先算法: "<<endl;

output(p,n);

}

?

void hrf(works *p,int n)

{

sort(p,n);

for(int i=0;i<n-1;i++)

{

int k=0;

if(i==0)

p[i].ftime =p[i].ctime +p[i].stime ;

?

else

p[i].ftime =p[i].stime +p[i-1].ftime ;

for(int j=i+1;j<n;j++)

{

if(p[j].ctime <=p[i].ftime )

k++;

}

double maxrratio=(p[i].ftime -p[i+1].ctime )/p[i+1].stime ;

int ps=i+1;

for(int m=i+1;m<i+k;m++)

{

if((p[i].ftime -p[m+1].ctime)/p[m+1].stime >=maxrratio)

{

maxrratio=(p[i].ftime -p[m+1].ctime)/p[m+1].stime;

ps=m+1;

}

}

works temp;

temp=p[i+1];

p[i+1]=p[ps];

p[ps]=temp;

}

datap(p,n);

cout<<"高響應比優(yōu)先算法: "<<endl;

output(p,n);

}

3、給出測試數(shù)據(jù)和運行結(jié)果

workA={'作業(yè)名':'A','到達時間':0,'服務時間':6}

workB={'作業(yè)名':'B','到達時間':2,'服務時間':50}

workC={'作業(yè)名':'C','到達時間':5,'服務時間':20}

workD={'作業(yè)名':'D','到達時間':5,'服務時間':10}?

workE={'作業(yè)名':'E','到達時間':12,'服務時間':40}

workF={'作業(yè)名':'F','到達時間':15,'服務時間':8}

先來先服務算法

調(diào)度順序:['A',?'B',?'C',?'D',?'E',?'F']?周轉(zhuǎn)時間:74.1667?帶權(quán)周轉(zhuǎn)時間:5.2425

短作業(yè)優(yōu)先算法

調(diào)度順序:['A',?'D',?'F',?'C',?'E',?'B']?周轉(zhuǎn)時間:44.8333?帶權(quán)周轉(zhuǎn)時間:1.16025

高響應比優(yōu)先算法


作業(yè)調(diào)度的評論 (共 條)

分享到微博請遵守國家法律
花莲市| 论坛| 木里| 罗定市| 堆龙德庆县| 明溪县| 连平县| 泰兴市| 贵州省| 和田县| 西乌| 盐城市| 上杭县| 应用必备| 高要市| 华阴市| 南澳县| 祁东县| 泰宁县| 翁源县| 余姚市| 兴国县| 宁都县| 新龙县| 云浮市| 凤翔县| 清苑县| 宜州市| 罗平县| 安图县| 石台县| 台州市| 确山县| 平南县| 海丰县| 罗平县| 台北市| 济阳县| 呼伦贝尔市| 密云县| 福贡县|