操作系统实验 第五讲 磁盘调度算法
更新时间:2023-09-16 23:50:01 阅读量: 高中教育 文档下载
- 操作系统推荐度:
- 相关推荐
操作系统 实 验 报 告
课程名称 实验项目名称 学号 操作系统实验 磁盘调度算法 班级 20120616 计算机科学姓名 计算机科学 学生所在学院 与技术学院 实验室名称地点
专业 与技术 指导教师 初妍 21#428 哈尔滨工程大学 计算机科学与技术学院
第六讲 磁盘调度算法
一、实验概述
1. 实验名称
磁盘调度算法 2. 实验目的
(1)通过学习EOS 实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机;
(2)观察 EOS 实现的FCFS、SSTF和 SCAN磁盘调度算法,了解常用的磁盘调度算法;
(3)编写 CSCAN和 N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理解。 3. 实验类型
验证性+设计性实验 4. 实验内容
(1)验证先来先服务(FCFS)磁盘调度算法; (2)验证最短寻道时间优先(SSTF)磁盘调度算法; (3)验证SSTF算法造成的线程“饥饿”现象; (4)验证扫描(SCAN)磁盘调度算法; (5)改写SCAN算法。
二、实验环境
在OS Lab实验环境的基础上,利用EOS操作系统,由汇编语言及C语言编写代码,对需要的项目进行生成、调试、查看和修改,并通过EOS应用程序使内核从源代码变为可以在虚拟机上使用。 三、实验过程
1. 设计思路和流程图 (1)改写SCAN算法
在已有 SCAN 算法源代码的基础上进行改写,要求不再使用双重循环,而是只遍历一次请求队列中的请求,就可以选中下一个要处理的请求。算法流程图如下图所示。
1
图 3.1.1 SCAN算法IopDiskSchedule函数流程图
(2)编写循环扫描(CSCAN)磁盘调度算法
在已经完成的SCAN算法源代码的基础上进行改写,不再使用全局变量ScanInside确定磁头移动的方向,而是规定磁头只能从外向内移动。当磁头移动到最内的被访问磁道时,磁头立即移动到最外的被访问磁道,即将最大磁道号紧接着最小磁道号构成循环,进行扫描。算法流程图如下图所示。
图 3.1.2 CSCAN算法IopDiskSchedule函数流程图
(3)编写N-Step-SCAN磁盘调度算法
在已经完成的 SCAN 算法源代码的基础上进行改写,将请求队列分成若干个长度为 N 的子队列,调度程序按照 FCFS原则依次处理这些子队列,而每处理一个子队列时,又是按照SCAN算法。算法流程图如下图所示。
2
图 3.1.3 N-Step-SCAN算法IopDiskSchedule函数流程图
2. 算法实现
(1)改写SCAN算法
在一次遍历中,不再关心当前磁头移动的方向,而是同时找到两个方向上移动距离最短的线程所对应的请求,这样就不再需要遍历两次。 在计算出线程要访问的磁道与当前磁头所在磁道的偏移后,可以将偏移分为三种类型:偏移为0, 表示线程要访问的磁道与当前磁头所在磁道相同,此情况应该优先被调度,可立即返回该线程对应的请求的指针;偏移大于 0,记录向内移动距离最短的线程对应的请求;偏移小于 0,记录向外移动距离最短的线程对应的请求。循环结束后,根据当前磁头移动的方向选择同方向移动距离最短的线程,如果在同方向上没有线程,就变换方向,选择反方向移动距离最短的线程。
(2)编写循环扫描(CSCAN)磁盘调度算法
由于规定了磁头只能从外向内移动,所以在每次遍历中,总是同时找到向内移动距离最短的线程和向外移动距离最长的线程。注意,与 SCAN 算法查找向外移动距离最短线程不同,这里查找向外移动距离最长的线程。在开始遍历前,可以将用来记录向外移动最长距离的变量赋值为0。在计算出线程要访问的磁道与当前磁头所在磁道的偏移后,同样可以将偏移分为三种类型:偏移为 0,表示线程要访问的磁道与当前磁头所在磁道相同,此情况应优先被调度,可立即返回
3
该线程对应的请求的指针;偏移大于 0,记录向内移动距离最短的线程对应的请求;偏移小于 0,记录向外移动距离最长的线程对应的请求。循环结束后,选择向内移动距离最短的线程,如果没有向内移动的线程,就选择向外移动距离最长的线程。
(3)编写N-Step-SCAN磁盘调度算法
在 block.c 文件中的第360 行定义了一个宏 SUB_QUEUE_LENGTH,表示子队列的长度(即N 值 )。目前这个宏定义的值为6。在第 367行定义了一个全局变量SubQueueRemainLength,表示第一个子队列剩余的长度,并初始化其值为SUB_QUEUE_LENGTH。在执行 N-Step-SCAN算法时,要以第一个子队列剩余的长度做为计数器,确保只遍历第一个子队列剩余的项。所以,结束遍历的条件就既包括第一个子队列结束,又包括整个队列结束(如果整个队列的长度小于第一个子队列剩余的长度)。注意,不要直接使用第一个子队列剩余的长度做为计数器,可以定义一个新的局部变量来做为计数器。按照 SCAN 算法从第一个子队列剩余的项中选择一个合适的请求。最后,需要将第一个子队列剩余长度减少1(SubQueueRemainLength减少1),如果第一个子队列剩余长度变为 0,说明第一个子队列处理完毕,需要将子队列剩余的长度重新变为 N(SubQueueRemainLength 重新赋值为SUB_QUEUE_LENGTH),从而开始处理下一个子队列。
3. 需要解决的问题及解答
(1)实验指导P176-3.2验证先来先服务(FCFS)磁盘调度算法,要求请给出在“输出”窗口中的结果。
答:先来先服务(FCFS)磁盘调度算法在“输出”窗口中的结果如下图所示。
4
正在阅读:
操作系统实验 第五讲 磁盘调度算法09-16
A1 技术支持的学情分析作业2—学情分析报告; 学情分析报告03-23
文献检索03-26
习题答案-建筑工程施工技术(北京大学出版社) 第1章 土石方工程 - 图文10-25
2018人教版七年级生物下册知识点归总07-21
哪些地可以做休闲农业的项目用地?这些文件已经说明了04-26
三峡移民精神报告会文稿05-06
用电信息采集调试运维方案(公共)(1)03-17
石门沟水库施工组织设计05-15
- 上海大众、一汽大众、东风日产车型与VIN代号对照表
- 第2章服装原型及原型制作
- 江苏省工商行政管理系统经济户口管理办法及四项制度
- 纪检监察业务知识试题2
- 传感器综合题答案
- 北京第二外国语学院翻硕招生人数及学费
- 初三新编英语教材下册
- 公司庆中秋、迎国庆联欢会客串词
- 向区委常委会汇报安全生产工作材料
- 2006年GCT英语模拟试题(三)及答案解析
- 经济法概念的早期使用
- 我爱做家务课堂教学设计
- 学校安全工作月报表、消防安全排查表、消防隐患排查台账
- 成本会计毕业论文
- 班级文化建设论文
- 2018年天津市高考文科试题与答案汇总(Word版) - 图文
- 铁路论文
- 2017年嵌入式系统设计师考试时间及地点
- 1.111--灾害与突发公共卫生事件应急预案
- 起爆点主图 注意买入 拉升 逃顶源码指标通达信指标公式源码
- 调度
- 磁盘
- 算法
- 操作系统
- 实验
- 2015-2016学年度沪教版二年级语文下册期末测试卷(2016、6)
- 掘进机司机手指口述安全确认操作标准
- 2012年福建高考理科数学试卷及答案(word版) - 图文
- 2011上学期固体物理A卷答案
- 特种总局登高初试试题4
- 240《自然地理学(一)》答案 - 图文
- 王庆龙教育教学对联
- 浙江省2004年10月高等教育自学考试 药剂学试题 课程代码03029
- 呼吸护理病历-肺炎
- 2011-2012.1.《离散数学上》试卷B卷
- 六年级英语教学工作总结(精选多篇)
- 关于建设工程执行劳动保险金费率的通知(穗建经〔2010〕546号)
- 中学田径运动会秩序册
- 侗家三宝
- 关于推进农村集体经济股份制改革的意见重点
- 2015最新人教版英语六年级下册第二单元教案
- 写自己熟悉的一个人
- 城市燃气企业品牌建设思考
- 浅谈生本英语课堂在农村中学的有效实施
- EDH最新规则,7版-大战役以后环境