操作系统实验报告-作业调度
更新时间:2024-03-16 23:13:01 阅读量: 综合文库 文档下载
- 操作系统有哪些推荐度:
- 相关推荐
作业调度
120511504
一、实验目的
1、对作业调度的相关内容作进一步的理解。 2、明白作业调度的主要任务。 3、通过编程掌握作业调度的主要算法。 二、实验内容及要求
1、对于给定的一组作业, 给出其到达时间和运行时间,例如下表所示:
作业名 到达时间 服务时间 A 0 6 B 2 50 C 5 20 D 5 10 E 12 40 F 15 8 2、分别用先来先服务算法、短作业优先和响应比高者优先三种算法给出作业的调度顺序。
3、计算每一种算法的平均周转时间及平均带权周转时间并比较不同算法的优劣。
三、程序中使用的数据结构及符号说明
进程结构体
{'作业名':'A','到达时间':0,'服务时间':6,'结束时间':0,'周转时间':0,'带权周转时间':0}
四、主要算法流程图 开始退出系统N响应比高者优先短作业优先先来先服务算法Y生成调度顺序队列计算平均周转时间及平均带权周转时间结束
五、测试数据及运行结果
测试数据
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['到达时间'] listdd.append(work2) if len(listdd)!=0:
li = sorted(listdd, key=lambda s: (s['等待时间']+s['服务时间'])/s['服务时间'])
resultlist.append(li[-1]) list.remove(li[-1]) ctime+=li[-1]['服务时间'] listdd=[] return resultlist #调度顺序
def shunxu(resultlist,miaoshu): print(miaoshu) ddsx=[]
for work in resultlist: for d,x in work.items():
if d.decode('gb2312')==u'作业名': ddsx.append(x)
#print d.decode('gb2312')+\ print(u'调度顺序:'+str(ddsx)) turnaroundTime(resultlist) #平均周转时间及平均带权周转时间 def turnaroundTime(resultlist): time=0
for work in resultlist:
work['结束时间']=work['服务时间']+time time=work['结束时间']
work['周转时间']=work['结束时间']-work['到达时间'] work['带权周转时间']=work['周转时间'] / work['服务时间'] zzsj=0 dqzzsj=0
for work in resultlist: zzsj+=work['周转时间'] dqzzsj+=work['带权周转时间']
print('周转时间:'+str(zzsj*1.0/len(resultlist))) print('带权周转时间:'+str(dqzzsj*1.0/len(resultlist))) print('')
shunxu(fcfs(list1),'先来先服务算法') shunxu(sjf(list2),'短作业优先算法') shunxu(hrrn(list3),'响应比高者优先算法')
正在阅读:
操作系统实验报告-作业调度03-16
计算机网络相关选择题-谢希仁(第六版)01-22
湘版高中音乐鉴赏《音乐从古典走向浪漫》11-11
黄金分割教案12-22
创伤07-07
雨后作文300字06-27
一件让我伤心的事作文450字07-05
《喂——出来》续写06-25
爱之链10-17
蜘蛛开店续写06-28
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 调度
- 操作系统
- 作业
- 实验
- 报告
- 《管理学基础》仿真试卷(第一套)
- 参观古田会议遗址心得
- 岗位职责
- 农资样品抽样的做法与体会
- 国投使命
- 戈壁荒漠地区CRTSI型双块式无砟轨道裂纹研究
- 七年级地理上册第一章第二节地球的运动第1课时学案新版新人教版
- 利用WPF建立自适应窗口大小布局的WinForm窗口
- Gold nanocluster-based fluorescence biosensor for targeted i
- 《区域经济方法与模型》课程教学大纲 - 图文
- 8三顾茅庐(已修改)
- 河南省灵宝市2017 - 2018学年高一英语上学期第二次月考试题
- 2017年上海中考英语考纲词汇(全)
- 妇产科判断题
- 肾病综合征治疗方案
- 南京农业大学科技成果奖励办法精品名师资料
- 2018年中国高新技术产业园行业调研及市场分析报告目录
- 建筑物理实验报告
- 云南省独立学院辅导员职业倦怠的调查分析及干预对策
- 2012年毕业班第一次月考语文试卷