先来先服务,短作业优先,最高响应比三种算法下求平均周转和带权周转时间的实现
来源:互联网 发布:淘宝上有两家大拿韩代 编辑:程序博客网 时间:2024/04/28 12:41
codear发表于2006年04月11日 21:20:00(http://blog.csdn.net/coDear)
#include<iostream.h>
#define N 6
struct time{
float arriveTime;
float runTime;
float finishTime;
float totalTime;
float weightTotalTime;
char name;
};
void InputTime(time *p)
{
int i;//counter
cout<<"input name & arrive time & run time:"<<endl;
for(i=0;i<=N-1;i++){
float temp1,temp2;
char name;
cout<<"作业名:"<<endl;
cin>>name;
p[i].name=name;
cout<<"到达时:"<<endl;
cin>>temp1;
p[i].arriveTime=temp1;
cout<<"运行时间:"<<endl;
cin>>temp2;
p[i].runTime=temp2;
}
}
void Print(time *p,float totalTimeSum,float weightTotalTimeSum){
cout<<"运行次序:"<<endl;
for(int k=0;k<=N-1;k++)
{
cout<<p[k].name<<" ";
}
cout<<endl;
cout<<"平均周转时间:"<<totalTimeSum/N<<endl;
cout<<"平均带权周转时间:"<<weightTotalTimeSum/N<<endl;
}
void sort(time *p)
{
for(int i=0;i<=N-1;i++)
for(int j=0;j<=i;j++)
if(p[i].arriveTime<p[j].arriveTime)
{
time temp;
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
void deal(time *p,float &totalTimeSum,float &weightTotalTimeSum)
{
int k;//counter
for(k=0;k<=N-1;k++)
{
if(k==0)
p[k].finishTime=p[k].arriveTime+p[k].runTime;
else
p[k].finishTime=p[k-1].finishTime+p[k].runTime;
}
for(k=0;k<=N-1;k++)
{
p[k].totalTime=p[k].finishTime-p[k].arriveTime;
p[k].weightTotalTime=p[k].totalTime/p[k].runTime;
totalTimeSum+=p[k].totalTime;
weightTotalTimeSum+=p[k].weightTotalTime;
}
}
void FCFS(time *p)
{
float totalTimeSum=0,weightTotalTimeSum=0;
sort(p);
deal(p,totalTimeSum,weightTotalTimeSum);
cout<<"先来先服务:"<<endl;
Print(p,totalTimeSum,weightTotalTimeSum);
}
void SWF(time *p)
{
float totalTimeSum=0,weightTotalTimeSum=0;
sort(p);
for(int m=0;m<N-1;m++)
{
if(m==0)
p[m].finishTime=p[m].arriveTime+p[m].runTime;
else
p[m].finishTime=p[m-1].finishTime+p[m].runTime;
int i=0;
for(int n=m+1;n<=N-1;n++)
{
if(p[n].arriveTime<=p[m].finishTime)
i++;
}
float min=p[m+1].runTime;
int follow=m+1;
for(int k=m+1;k<m+i;k++)
{
if(p[k+1].runTime<min)
{min=p[k+1].runTime;
follow=k+1;}
}
time temp;
temp=p[m+1];
p[m+1]=p[follow];
p[follow]=temp;
}
deal(p,totalTimeSum,weightTotalTimeSum);
cout<<"短作业优先:"<<endl;
Print(p,totalTimeSum,weightTotalTimeSum);
}
void TRRF(time *p){
float totalTimeSum=0,weightTotalTimeSum=0;
sort(p);
for(int m=0;m<N-1;m++)
{
if(m==0)
p[m].finishTime=p[m].arriveTime+p[m].runTime;
else
p[m].finishTime=p[m-1].finishTime+p[m].runTime;
int i=0;
for(int n=m+1;n<=N-1;n++)
{
if(p[n].arriveTime<=p[m].finishTime)
i++;
}
float max=(p[m].finishTime-p[m+1].arriveTime)/p[m+1].runTime;
int follow=m+1;
for(int k=m+1;k<m+i;k++)
{
if(max<=(p[m].finishTime-p[k+1].arriveTime)/p[k+1].runTime){
max=(p[m].finishTime-p[k+1].arriveTime)/p[k+1].runTime;
follow=k+1;
}
}
time temp;
temp=p[m+1];
p[m+1]=p[follow];
p[follow]=temp;
}
deal(p,totalTimeSum,weightTotalTimeSum);
cout<<"最高响应比优先:"<<endl;
Print(p,totalTimeSum,weightTotalTimeSum);
}
void main(){
time a[N];
InputTime(a);
time *b=a;time *c=a;
FCFS(a);
SWF(b);
TRRF(c);
}
/*
input name & arrive time & run time:
作业名:
a
到达时:
0
运行时间:
6
作业名:
b
到达时:
2
运行时间:
50
作业名:
c
到达时:
5
运行时间:
20
作业名:
d
到达时:
5
运行时间:
10
作业名:
e
到达时:
12
运行时间:
40
作业名:
f
到达时:
15
运行时间:
8
先来先服务:
运行次序:
a b c d e f
平均周转时间:74.1667
平均带权周转时间:5.2425
短作业优先:
运行次序:
a d f c e b
平均周转时间:44.8333
平均带权周转时间:1.6025
最高响应比优先:
运行次序:
a d c f b e
平均周转时间:48.5
平均带权周转时间:2.0275
Press any key to continue
*/
- 先来先服务,短作业优先,最高响应比三种算法下求平均周转和带权周转时间的实现
- 操作系统中和时间的有关的几个概念:吞吐率(流水线完成时间)、平均周转时间和平均带权周转时间、最高响应比优先
- 操作系统中和时间的有关的几个概念:吞吐率(流水线完成时间)、平均周转时间和平均带权周转时间、最高响应比优先
- 处理机调度问题以及求响应比,作业周转时间和平均周转时间
- 完成时间,周转时间,平均周转时间以及带权周转时间和平均带权周转时间
- 周转时间 平均周转时间 带权周转时间 平均带权周转时间
- 周转时间和带权周转时间的计算
- 周转时间和带权周转时间的计算
- 假设系统按单值方式运行且采用最短作业优先算法,有J1,J2,J3,J4共4个作业同时到达,则以下哪几种情况下的平均周转时间为10分钟?
- 平均周转时间各种算法
- Java模拟最短作业优先、时间片轮转、最高响应比三种进程调度算法
- 单道批系统,响应比优先调度,平局周转时间的计算
- 操作系统中先来先服务、短作业优先、最高相应比优先三个进程数组实现的算法
- 作业周转时间以及平均等待时间
- 多种调度算法的平均周转时间算例
- 码元周转时间响应比
- 进程平均周转时间的计算
- [操作系统]关于平均周转时间的一些题目
- mfc help!!!
- IE6和IE7关闭窗口时提示 及上传图片前的本地预览解决办法
- 三言二拍之3377(二)--3377事件注释
- 从零实施ERP如何成功
- 从惰性中苏醒
- 先来先服务,短作业优先,最高响应比三种算法下求平均周转和带权周转时间的实现
- xml读取(小记)
- matlab里作图使用不同的颜色
- 看来,C++有默认的拷贝构造函数和赋值运算符=!
- java 静态导入
- 权限树是怎么作出来的?
- 关于HPC和GIS的一点感想
- 算命。。命运。。
- 为MFC应用程序添全屏幕显示功能