操作系统 实 验 报 告
课程名称 实验项目名称 学号 姓名 2012111105 李佳楠 计算机科学 学生所在学院 与技术学院 实验室名称地点 21#428 指导教师 初妍 操作系统实验 磁盘调度算法 班级 专业 20122111 保密管理
哈尔滨工程大学 计算机科学与技术学院
一、实验概述
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