五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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)度的評論 (共 條)

分享到微博請遵守國家法律
修武县| 玛沁县| 成都市| 包头市| 炎陵县| 张家港市| 泸定县| 安乡县| 通化县| 郴州市| 泸西县| 台北市| 台湾省| 湘潭市| 巴里| 农安县| 洛南县| 双鸭山市| 利川市| 兴宁市| 乌什县| 黄冈市| 阳曲县| 丘北县| 沙雅县| 新巴尔虎左旗| 双柏县| 葫芦岛市| 日土县| 永嘉县| 南昌县| 睢宁县| 泰兴市| 丰原市| 六安市| 安义县| 天柱县| 芷江| 如东县| 奉贤区| 图们市|