作业优先调度算法 先来先服务、短作业调度算法(c语言描述)
来源:互联网 发布:大麦户源码安装教程 编辑:程序博客网 时间:2024/05/21 09:45
/*先来先服务调度算法*/
#include<stdio.h>
#define N 10
int Arival[N]={0};
int Go[N]={0};
int Start[N]={0};
int End[N]={0};
int Timer[N]={0};
float DTimer[N]={0};
int Check[N]={0};
int Select(int a[],int n){
int i=0;
for(int k=0;k<n;k++){
if(Check[k]==0){
i=k;
break;
}
}
for(int j=0;j<n;j++){
if(a[i]>a[j]&&Check[j]==0){
i=j;
}
}
Check[i]=1;
return i;
}
int main(){
int n,k=0,l=0,Atimer=0,timer=0;
printf("进程的个数:");
scanf("%d",&n);
for(int i=0;i<n;i++){
printf("第%d个进程的到达时间:",i+1);
scanf("%d",Arival+i);
printf("第%d个进程的运行时间:",i+1);
scanf("%d",Go+i);
}
k=Select(Arival,n);
Start[k]=Arival[k];
End[k]=Start[k]+Go[k];
Timer[k]=End[k]-Arival[k];
DTimer[k]=(float)Timer[k]/Go[k];
printf("提交时间 运行时间 开始时间 结束时间 周转时间 带权周转时间\n");
for(int m=0;m<n;m++){
l=k;
k=Select(Arival,n);
Start[k]=End[l];
End[k]=Start[k]+Go[k];
Timer[k]=End[k]-Arival[k];
DTimer[k]=(float)Timer[k]/Go[k];
Atimer=Timer[l]+Atimer;
timer=timer+DTimer[l];
printf(" %2d %2d %2d %2d %2d %.2f\n",Arival[l],Go[l],Start[l],End[l],Timer[l],DTimer[l]);
}
printf("平均周转时间:%.2f\n",(float)Atimer/n);
printf("平均带权周转时间:%.2f\n",(float)timer/n);
return 0;
}
/*短作业优先调度算法*/
#include<stdio.h>
#define N 10
int Arival[N]={0};
int Go[N]={0};
int Start[N]={0};
int End[N]={0};
int Timer[N]={0};
float DTimer[N]={0};
int Check[N]={0};
int Select(int a[],int n,int local){
int i=0;
for(int k=0;k<n;k++){
if(Check[k]==0){
i=k;
break;
}
}
for(int j=0;j<n;j++){
if(a[i]>a[j]&&Check[j]==0&&Arival[j]<=local){
i=j;
}
}
Check[i]=1;
return i;
}
int main(){
int n,k=0,l=0,Atimer=0,timer=0,localtime=0;
printf("进程的个数:");
scanf("%d",&n);
for(int i=0;i<n;i++){
printf("第%d个进程的到达时间:",i+1);
scanf("%d",Arival+i);
printf("第%d个进程的运行时间:",i+1);
scanf("%d",Go+i);
}
Start[k]=Arival[k];
End[k]=Start[k]+Go[k];
Timer[k]=End[k]-Arival[k];
DTimer[k]=(float)Timer[k]/Go[k];
localtime=End[k];
Check[k]=1;
printf("进程 提交时间 运行时间 开始时间 结束时间 周转时间 带权周转时间\n");
for(int m=0;m<n;m++){
l=k;
k=Select(Go,n,localtime);
Start[k]=End[l];
End[k]=Start[k]+Go[k];
Timer[k]=End[k]-Arival[k];
DTimer[k]=(float)Timer[k]/Go[k];
localtime=End[k];
Atimer=Timer[l]+Atimer;
timer=timer+DTimer[l];
printf(" %d %2d %2d %2d %2d %2d %.2f\n",l,Arival[l],Go[l],Start[l],End[l],Timer[l],DTimer[l]);
}
printf("平均周转时间:%.2f\n",(float)Atimer/n);
printf("平均带权周转时间:%.2f\n",(float)timer/n);
return 0;
#include<stdio.h>
#define N 10
int Arival[N]={0};
int Go[N]={0};
int Start[N]={0};
int End[N]={0};
int Timer[N]={0};
float DTimer[N]={0};
int Check[N]={0};
int Select(int a[],int n){
int i=0;
for(int k=0;k<n;k++){
if(Check[k]==0){
i=k;
break;
}
}
for(int j=0;j<n;j++){
if(a[i]>a[j]&&Check[j]==0){
i=j;
}
}
Check[i]=1;
return i;
}
int main(){
int n,k=0,l=0,Atimer=0,timer=0;
printf("进程的个数:");
scanf("%d",&n);
for(int i=0;i<n;i++){
printf("第%d个进程的到达时间:",i+1);
scanf("%d",Arival+i);
printf("第%d个进程的运行时间:",i+1);
scanf("%d",Go+i);
}
k=Select(Arival,n);
Start[k]=Arival[k];
End[k]=Start[k]+Go[k];
Timer[k]=End[k]-Arival[k];
DTimer[k]=(float)Timer[k]/Go[k];
printf("提交时间 运行时间 开始时间 结束时间 周转时间 带权周转时间\n");
for(int m=0;m<n;m++){
l=k;
k=Select(Arival,n);
Start[k]=End[l];
End[k]=Start[k]+Go[k];
Timer[k]=End[k]-Arival[k];
DTimer[k]=(float)Timer[k]/Go[k];
Atimer=Timer[l]+Atimer;
timer=timer+DTimer[l];
printf(" %2d %2d %2d %2d %2d %.2f\n",Arival[l],Go[l],Start[l],End[l],Timer[l],DTimer[l]);
}
printf("平均周转时间:%.2f\n",(float)Atimer/n);
printf("平均带权周转时间:%.2f\n",(float)timer/n);
return 0;
}
/*短作业优先调度算法*/
#include<stdio.h>
#define N 10
int Arival[N]={0};
int Go[N]={0};
int Start[N]={0};
int End[N]={0};
int Timer[N]={0};
float DTimer[N]={0};
int Check[N]={0};
int Select(int a[],int n,int local){
int i=0;
for(int k=0;k<n;k++){
if(Check[k]==0){
i=k;
break;
}
}
for(int j=0;j<n;j++){
if(a[i]>a[j]&&Check[j]==0&&Arival[j]<=local){
i=j;
}
}
Check[i]=1;
return i;
}
int main(){
int n,k=0,l=0,Atimer=0,timer=0,localtime=0;
printf("进程的个数:");
scanf("%d",&n);
for(int i=0;i<n;i++){
printf("第%d个进程的到达时间:",i+1);
scanf("%d",Arival+i);
printf("第%d个进程的运行时间:",i+1);
scanf("%d",Go+i);
}
Start[k]=Arival[k];
End[k]=Start[k]+Go[k];
Timer[k]=End[k]-Arival[k];
DTimer[k]=(float)Timer[k]/Go[k];
localtime=End[k];
Check[k]=1;
printf("进程 提交时间 运行时间 开始时间 结束时间 周转时间 带权周转时间\n");
for(int m=0;m<n;m++){
l=k;
k=Select(Go,n,localtime);
Start[k]=End[l];
End[k]=Start[k]+Go[k];
Timer[k]=End[k]-Arival[k];
DTimer[k]=(float)Timer[k]/Go[k];
localtime=End[k];
Atimer=Timer[l]+Atimer;
timer=timer+DTimer[l];
printf(" %d %2d %2d %2d %2d %2d %.2f\n",l,Arival[l],Go[l],Start[l],End[l],Timer[l],DTimer[l]);
}
printf("平均周转时间:%.2f\n",(float)Atimer/n);
printf("平均带权周转时间:%.2f\n",(float)timer/n);
return 0;
}
先来先服务,到达时间为标准!
短作业,运行时间为标准!
周转时间:作业从提交给系统开始,到作业完成的这一段时间间隔。
带权周转时间:作业周转时间与服务时间的比值。
0 0
- 作业优先调度算法 先来先服务、短作业调度算法(c语言描述)
- 短作业优先调度算法
- 短作业优先调度算法
- 算法/调度算法/ShortJobFirst(SJF)短作业优先调度算法
- 最短作业优先调度算法
- 进程调度算法 短作业优先 SJF
- 短作业调度算法
- Java模拟操作系统进程调度算法—先来先服务、短作业优先、高响比优先
- Java模拟操作系统进程调度算法—先来先服务、短作业优先、高响比优先
- 作业调度之先来先服务算法C语言实现
- 短作业优先调度算法(C++代码)
- 调度算法——短作业优先(java实现)
- 操作系统短作业优先(SJF)调度算法
- 【计算机操作系统】先来先服务FCFS和短作业优先SJF进程调度算法
- 【操作系统 - 1】先来先服务FCFS和短作业优先SJF进程调度算法
- 《操作系统》 先来先服务FCFS和短作业优先SJF进程调度算法相关计算及实验
- 先来先服务FCFS和短作业优先SJF进程调度算法
- 抢占式短作业优先调度算法(SJF)
- 第二章 递归
- CSDN日报20170428 ——《你的开发为何如此低效?》
- 网络层-ICMP(互联网消息控制协议)
- Linux基础学习笔记之screen命令
- 关于三级管总结
- 作业优先调度算法 先来先服务、短作业调度算法(c语言描述)
- Tensorflow实现多层感知器
- Python机器学习库SKLearn分类算法之朴素贝叶斯
- Python 文件操作 -- 常更
- 100道动态规划——40 CSUOJ 1889 Copying DNA 记忆化搜索 DP的感觉
- 母函数(生成函数)
- java VE 安装
- Extra Krunch
- MySQL-python-1.2.4b4.win32.-py2.7.exe安装失败,无法自动检测到python安装目录