多机调度代码
萌到你眼炸
722次浏览
2020年07月29日 18:43
最佳经验
本文由作者推荐
踪迹的近义词-三揖三让
#define N 10
typedef struct node
{
int ID,time;//作业所需时间
}jobnode;
typedef struct Node {
int ID,avail;//ID 机器编号 avail 每次作业的初始时间
}manode;
manode machine[N]; jobnode job[N]; /* 找出下个作业执行机器 */
manode* Find_min(manode a[],int m)
{
manode* temp=&a[0];
for(int i=1;i
if(a[i].avail
temp=&a[i]; }
return temp;
} /* 对作业时间由大到小进行排序 */
void Sort(jobnode t[],int n)
{
jobnode temp;
for(int i=0;i
{
if(job[j].time>job[j-1].time)
{
temp=job[j];
job[j]=job[j-1];
job[j-1]=temp;
}
}
}
void main() {
int n,m,temp,i; manode* ma;
printf("输入作业数目(作业编号按输入顺序处理)
");
scanf("%d",&n);
printf("输入相应作业所需处理时间:
");
for( i=0;i
scanf("%d",&job[i].time);
job[i].ID=i+1;
}
printf("输入机器数目(机器编号按输入顺序处理)
");
scanf("%d",&m);
for( i=0;i
machine[i].ID=i+1;
machine[i].avail=0;
}
putchar('
');
if(n<=m)
{
printf("为每个作业分配一台机器,可完成任务!
");
return;
}
Sort(job,n);
for( i=0;i
ma=Find_min(machine,m);
printf("将机器: M%d 从 %d -----> %d 的时间段分配给作业: %d
",ma->ID,ma->avail,ma->avail+job[i].time,job[i].ID); ma->avail+=job[i].time;
}
temp=machine[0].avail;
for( i=1;i
if(machine[i].avail>temp)
temp=machine[i].avail;
}
putchar('
');
printf("该批作业处理完成所需加工时间为: %d
",temp);
while (1);
}