操作系统实验报告-作业调度.docVIP

  • 191
  • 0
  • 约3.36千字
  • 约 5页
  • 2016-11-29 发布于重庆
  • 举报
操作系统实验报告-作业调度

作业调度 120511504 实验目的 1、对作业调度的相关内容作进一步的理解。 2、明白作业调度的主要任务。 3、通过编程掌握作业调度的主要算法。 二、实验内容及要求 1、对于给定的一组作业, 给出其到达时间和运行时间,例如下表所示: 作业名 A B C D E F 到达时间 0 2 5 5 12 15 服务时间 6 50 20 10 40 8 2、分别用先来先服务算法、短作业优先和响应比高者优先三种算法给出作业的调度顺序。 3、计算每一种算法的平均周转时间及平均带权周转时间并比较不同算法的优劣。 三、程序中使用的数据结构及符号说明 进程结构体 {作业名:A,到达时间:0,服务时间:6,结束时间:0,周转时间:0,带权周转时间:0} 主要算法流程图 测试数据及运行结果 测试数据 workA={作业名:A,到达时间:0,服务时间:6} workB={作业名:B,到达时间:2,服务时间:50} workC={作业名:C,到达时间:5,服务时间:20} workD={作业名:D,到达时间:5,服务时间:10} workE={作业名:E,到达时间:12,服务时间:40} workF={作业名:F,到达时间:15,服务时间:8} 运行结果 先来先服务算法 调度顺序:[A, B, C, D, E, F] 周转时间:74.1666666667 带权周转时间:4.83333333333 短作业优先算法 调度顺序:[A, D, F, C, E, B] 周转时间:44.8333333333 带权周转时间:1.16666666667 响应比高者优先算法 调度顺序:[A, D, F, E, C, B] 周转时间:48.1666666667 带权周转时间:1.5 六、实验体会或对改进实验的建议 七、源代码 #encoding=gbk workA={作业名:A,到达时间:0,服务时间:6,结束时间:0,周转时间:0,带权周转时间:0} workB={作业名:B,到达时间:2,服务时间:50} workC={作业名:C,到达时间:5,服务时间:20} workD={作业名:D,到达时间:5,服务时间:10} workE={作业名:E,到达时间:12,服务时间:40} workF={作业名:F,到达时间:15,服务时间:8} list1=[workB,workA,workC,workD,workE,workF] list2=[workB,workA,workC,workD,workE,workF] list3=[workB,workA,workC,workD,workE,workF] #先来先服务算法 def fcfs(list): resultlist = sorted(list, key=lambda s: s[到达时间]) return resultlist #短作业优先算法 def sjf(list): time=0 resultlist=[] for work1 in list: time+=work1[服务时间] listdd=[] ctime=0 for i in range(time): for work2 in list: if work2[到达时间]=ctime: listdd.append(work2) if len(listdd)!=0: li = sorted(listdd, key=lambda s: s[服务时间]) resultlist.append(li[0]) list.remove(li[0]) ctime+=li[0][服务时间] listdd=[] return resultlist #响应比高者优先算法 def hrrn(list): time=0 resultlist=[] for work1 in list: time+=work1[服务时间] listdd=[] ctime=0 for i in range(time): for work2 in list: if work2[到达时间]=ctime: work2[等待时间]=ctime-work2[到达时间]

文档评论(0)

1亿VIP精品文档

相关文档