广州大学学生实验报告
开课学院及实验室:计算机科学与网络工程学院 软件实验室 2023年6月9日
学院 |
计算机科学与网络工程学院 |
年级/专业/班 |
姓名 |
学号 |
|||
实验课程名称 |
操作系统实验 |
成绩 |
|||||
实验项目名称 |
磁盘管理 |
指导老师 |
实验五 磁盘管理
一、实验目的
1、了解磁盘调度的策略和原理;
2、理解和掌握磁盘调度算法——先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、电梯扫描算法(SCAN)。
二、实验环境
Visual Studio 2019
三、实验内容
1、模拟先来先服务法(First-Come, First-Served,FCFS),最短寻道时间优先法(Shortest Seek Time First, SSTF),电梯扫描算法(SCAN)三种磁盘调度算法;
2、对三种算法进行对比分析;
3、输入为一组请求访问磁道序列,输出为每种调度算法的磁头移动轨迹和移动的总磁道数。
四、实验原理,实验中用到的系统调用函数(包括实验原理中介绍的和自己采用的),实验步骤
1、实验原理:
①先来先服务算法(FCFS):按先来后到次序服务,未作优化。最简单的移臂调度算法是“先来先服务”调度算法,这个算法实际上不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序。采用先来先服务算法决定等待访问者执行输入输出操作的次序时,移动臂来回地移动。先来先服务算法花费的寻找时间较长,所以执行输入输出操作的总时间也很长。
②最短寻道时间优先算法(SSTF):最短寻找时间优先调度算法总是从等待访问者中挑选寻找时间最短的那个请求先执行的,而不管访问者到来的先后次序。与先来先服务、算法比较,大幅度地减少了寻找时间,因而缩短了为各访问者请求服务的平均时间,也就提高了系统效率。但最短查找时间优先(SSTF)调度,FCFS会引起读写头在盘面上的大范围移动,SSTF查找距离磁头最短(也就是查找时间最短)的请求作为下一次服务的对象。SSTF查找模式有高度局部化的倾向,会推迟一些请求的服务,甚至引起无限拖延(又称饥饿)。
③扫描算法(SCAN):SCAN算法又称电梯调度算法。SCAN算法是磁头前进方向上的最短查找时间优先算法,它排除了磁头在盘面局部位置上的往复移动,SCAN算法在很大程度上消除了SSTF算法的不公平性,但仍有利于对中间磁道的请求。“电梯调度”算法是从移动臂当前位置开始沿着臂的移动方向去选择离当前移动臂最近的那个柱访问者,如果沿臂的移动方向无请求访问时,就改变臂的移动方向再选择。但是,“电梯调度”算法在实现时,不仅要记住读写磁头的当前位置,还必须记住移动臂的当前前进方向。
2、C库函数
函数声明:
srand((unsigned long)time(0))//由时间确定随机序列,执行一次,即生成随机数种子
memset(used, 0, sizeof(used))//数组初始化,置为全零,记录该随机数是否使用过
rand()//rand()随机生成一个0~32767的整数,使用%操作,筛选随机数的值
void Init(int num, int range, int& start, int track[]) //随机初始化测试数据