实 验 报 告课程名称操作系统实验实验项目名称磁盘调度算法学号班级20240616姓名专业计算机科学与技术学生所在学院计算机科学与技术学院指导老师初妍实验室名称地点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 算法源代码的基础上进行改写,要求不再使用双重循环,而是只遍历一次请求队列中的请求,就可以选中下一个要处理的请求。算法流程图如下图所示。图 3.1.1 SCAN 算法 IopDiskSchedule 函数流程图(2)编写循环扫描(CSCAN)磁盘调度算法在已经完成的 SCAN 算法源代码的基础上进行改写,不再使用全局变量 ScanInside 确定磁头移动的方向,而是规定磁头只能从外向内移动。当磁头移动到最内的被访问磁道时,磁头精品文档---下载后可任意编辑立即移动到最外的被访问磁道,即将最大磁道号紧接着最小磁道号构成循环,进行扫描。算法流程图如下图所示。图 3.1.2 CSCAN 算法 IopDiskSchedule 函数流程图(3)编写 N-Step-SCAN 磁盘调度算法在已经完成的 SCAN 算法源代码的基础上进行改写,将请求队列分成若干个长度为 N 的子队列,调度程序根据 FCFS 原则依次处理这些子队列,而每处理一个子队列时,又是根据SCAN 算法。算法流程图如下图所示。图 3.1.3 N-Step-SCAN 算法 IopDiskSchedule 函数流程图2. 算法实现(1)改写 SCAN 算法在一次遍历中,不再关怀当前磁头移动的方向,而是同时找到两个方向上移动距离最短的线程所对应的请求,这样就...