多机调度算法设计实验报告.docVIP

  • 122
  • 0
  • 约1.95千字
  • 约 6页
  • 2019-01-27 发布于广东
  • 举报
多机调度算法设计实验报告.doc

算法设计与分析实验报告 姓名:周保玉 班级:计科111 一、 实验名称:多机调度 时间:2013年4月26 口,星期五,第五、六节 地点:0#615 二、 实验目的及要求 冃的:学会处理多机调度问题。 要求:使所给的N个作业在尽可能短的时间内由M台机器加工处理完成。 三、 实验环境 在学校机房用C++实现操作。 四、 实验内容 编写程序,输入作业数以及各个作业所花费的时间,输入机器数,输出最 佳分配方案,即每个机器执行第几个作业。 五、 算法描述及实验步骤 定义一个函数将作业所需要的时间排序,如果机器数大于 等于作业数,只需将每个作业分配给一个机器即可,如果机器数 小于作业数,将作业所需的时间从大到小依次分配给机器如: 作业数为5,吋间分别为1 2345,机器数为3,则分配为 机器1的0到5的时间分配给作业5 机器2的0到4的时间分配给作业4 机器3的0到3的时间分配给作业3 机器3的3到5的时间分配给作业2 机器2的4到5的时间分配给作业1 六、 调试过程及实验结果 分配方式把握不好,容易出错。 ■二■二■二■二■二6 4 3 5 5Fan0 0 0 3 4完需汚所:3 曰业目理key n aTh £DjDjDjDjJJJ_ 入入 事更更多多多多寸亥?44^-=O t ■二■二■二■二■二 6 4 3 5 5 Fan 0 0 0 3 4完 需 汚所:3 曰业目理ke y n a Th £DjDjDjDjJJJ_ 入入 事更更多多多多寸亥 ?44^-= O t y ,rTT ,rTT ,rTT ,rTT ,rTT jg 6 LX 2 3 3 2KX 业应器 业 合合合△口△口 幺▼*£▼*£▼*£▼*£▼*6 己己己己己 哂哂哂哂哂: 间 -B -B -B -B 2 1 3 4 七、 总结 分配时先从大到小给每台机器分配一遍,然后在将剩余的时间从大到小 依次分配给机器现在正处理时间较少的机器。机器少,作业多时一台机器可能处 理两个以上的作业,分配时容易出错。 八、 附录(源程序清单) #includestdio.h #define N 10 typedef struct node { int ID,time; Jjobnode; typedef struct Node { int ID,avail; Jmanode; manode machinefN]; jobnode jobfNl; manode* Find_min(manode a[],int m) { manode* temp=a[0]; for(int i=l;im;i++) { if(a[i].availtemp-avail) temp=a[i]; } return temp; } void Sort (jobnode t[],int n) jobnode temp; for(int i=O;in-l;i++) for(int j=n-l;ji;j—) { if(job[j].timejob[j ?l].time) { temp=job[j]; job[j]=job[j-l]; job[j-l]=temp; void main() { int n,m,temp; manode* ma; printf(”输入作业数目:”); scanf(” %d”,n); printf(H输入相应作业所需处理时间:”); for(int i=0;ivn;i++) { scanf(H%d,job[i].time); job[i].ID=i+l; } printf(n输入机器数目:”); scanf(%d,m); fdr(i=0;im;i+4-) { machine[i].ID=i+l; machine[i].avail=O; } if(n=m) { printfC*为每个作业分配一台机器,可完成任务!\n”); return; } Sort (job,n); for(i=0;in;i 卄) { ma=Find_min(machine,m); printf(n将机器:%d从 %d到 %d的时间段分配给作 业:%d\n,\ma-ID,ma-avail,ma-avail+job[i] .timejobfi] .ID); ma-avail+=job[i].time; } temp=machine[O] .avail; for(i=l;im;i++) { if(machine[i].availtemp) temp=machine[i].avail; } printf(n该批作业处理完成所需加工时间为:%d\nH,temp);

文档评论(0)

1亿VIP精品文档

相关文档