哈尔滨工程大学操作系统(磁盘调度算法) 下载本文

操作系统 实 验 报 告

课程名称 实验项目名称 学号 姓名 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