操作系统实验磁盘调度

上传人:学*** 文档编号:292025550 上传时间:2022-05-13 格式:DOCX 页数:6 大小:17.45KB
返回 下载 相关 举报
操作系统实验磁盘调度_第1页
第1页 / 共6页
操作系统实验磁盘调度_第2页
第2页 / 共6页
操作系统实验磁盘调度_第3页
第3页 / 共6页
操作系统实验磁盘调度_第4页
第4页 / 共6页
操作系统实验磁盘调度_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《操作系统实验磁盘调度》由会员分享,可在线阅读,更多相关《操作系统实验磁盘调度(6页珍藏版)》请在金锄头文库上搜索。

1、本文格式为Word版,下载可任意编辑操作系统实验磁盘调度 操作系统 实 验 报 告 课程名称 测验工程名称 学号 姓名 学生所在学院 测验室名称地点 操作系统测验 磁盘调度算法 课程编号 0906553 年级 专业 2022 计算机科学与技术 计算机科学与技术 指导教师 初妍 21B475 哈尔滨工程大学 计算机科学与技术学院 第六讲 磁盘调度算法 一、测验概述 1. 测验名称 磁盘调度算法 2. 测验目的 (1)通过学习EOS 实现磁盘调度算法的机制,掌管磁盘调度算法执行的条件和时机; (2)查看 EOS 实现的FCFS、SSTF和 SCAN磁盘调度算法,了解常用的磁盘调度算法; (3)编写

2、 CSCAN和 N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理解。 3. 测验类型 验证性和设计性测验 4. 测验内容 (1)验证先来先服务(FCFS)磁盘调度算法; (2)验证最短寻道时间优先(SSTF)磁盘调度算法; (3)验证SSTF算法造成的线程“饥饿”现象; (4)验证扫描(SCAN)磁盘调度算法; (5)改写SCAN算法。 二、测验环境 在OS Lab测验环境的根基上,利用EOS操作系统,由汇编语言及C语言编写代码,对需要的工程举行生成、调试、查看和修改,并通过EOS应用程序使内核从源代码变为可以在虚拟机上使用。 三、测验过程 1. 设计思路和流程图 (1)改写SCAN

3、算法 在已有 SCAN 算法源代码的根基上举行改写,要求不再使用双重循环,而是只遍历一次苦求队列中的苦求,就可以选中下一个要处理的苦求。算法流程图如下图所示。 1 图 3.1.1 SCAN算法IopDiskSchedule函数流程图 (2)编写循环扫描(CSCAN)磁盘调度算法 在已经完成的SCAN算法源代码的根基上举行改写,不再使用全局变量ScanInside确定磁头移动的方向,而是规定磁头只能从外向内移动。当磁头移动到最内的被访问磁道时,磁头立刻移动到最外的被访问磁道,即将最大磁道号紧接着最小磁道号构成循环,举行扫描。算法流程图如下图所示。 图 3.1.2 CSCAN算法IopDiskSc

4、hedule函数流程图 (3)编写N-Step-SCAN磁盘调度算法 在已经完成的 SCAN 算法源代码的根基上举行改写,将苦求队列分成若干个长度为 N 的子队列,调度程序按照 FCFS原那么依次处理这些子队列,而每处理一个子队列时,又是按照SCAN算法。算法流程图如下图所示。 2 图 3.1.3 N-Step-SCAN算法IopDiskSchedule函数流程图 2. 算法实现 (1)改写SCAN算法 在一次遍历中,不再关切当前磁头移动的方向,而是同时找到两个方向上移动距离最短的线程所对应的苦求,这样就不再需要遍历两次。 在计算出线程要访问的磁道与当前磁头所在磁道的偏移后,可以将偏移分为三种

5、类型:偏移为0, 表示线程要访问的磁道与当前磁头所在磁道一致,此处境理应优先被调度,可立刻返回该线程对应的苦求的指针;偏移大于 0,记录向内移动距离最短的线程对应的苦求;偏移小于 0,记录向外移动距离最短的线程对应的苦求。循环终止后,根据当前磁头移动的方向选择同方向移动距离最短的线程,假设在同方向上没有线程,就变换方向,选择反方向移动距离最短的线程。 (2)编写循环扫描(CSCAN)磁盘调度算法 由于规定了磁头只能从外向内移动,所以在每次遍历中,总是同时找到向内移动距离最短的线程和向外移动距离最长的线程。留神,与 SCAN 算法查找向外移动距离最短线程不同,这里查找向外移动距离最长的线程。在开

6、头遍历前,可以将用来记录向外移动最长距离的变量赋值为0。在计算出线程要访问的磁道与当前磁头所在磁道的偏移后,同样可以将偏移分为三种类型:偏移为 0,表示线程要访问的磁道与当前磁头所在磁道一致,此处境应优先被调度,可立刻返回 3 该线程对应的苦求的指针;偏移大于 0,记录向内移动距离最短的线程对应的苦求;偏移小于 0,记录向外移动距离最长的线程对应的苦求。循环终止后,选择向内移动距离最短的线程,假设没有向内移动的线程,就选择向外移动距离最长的线程。 (3)编写N-Step-SCAN磁盘调度算法 在 block.c 文件中的第360 行定义了一个宏 SUB_QUEUE_LENGTH,表示子队列的长

7、度(即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 6

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号