一、实验目的和要求
1、通过设计程序,实现磁盘寻道算法中FCFS、SSTF、SCAN和CSCAN四种算法,加深对磁盘寻道算法的理解和掌握。
二、实验设备、环境
设备:操作系统为WINDOWS系统的计算机;
环境:C、C++、JAVA编程实现均可
三、实验步骤
1、根据题目要求设计进程调度算法所需数据结构;
2、分析题意,重点分析题目要求并给出解决方法;
3、按题目要求实现磁盘寻道的各种算法功能,完成本实验报告,并将实验报告以学号+姓名+实验五命名;
4、提交完成的实验结果。
四、实验内容(选用C、C++、JAVA语言实现均可)
设计程序,实现磁盘寻道的各种算法功能。具体要求如下:
1、数据结构的设计:磁盘寻道算法中主要包含两个初始数据项:磁盘寻道序列和当前磁头运动方向(SCAN和CSCAN专用),请根据题目的要求,完成数据项的设定。
2、具体功能需求:
(1)数据初始化:
数据初始化阶段,包含了磁盘寻道序列的初始化。应要求用户输入序列长度,如:
请输入磁盘寻道序列长度(10-20,含端点):
初始化阶段应包含检测功能,如用户输入数字不在给定区间,应要求用户重新输入,如:
您输入的磁盘寻道序列长度超出给定范围,请重新输入10-20(含端点)的数字:
请输入磁盘寻道序列长度(10-20,含端点):
页面访问序列,直接采取随机生成方式,随机生成0-200之间的数字,作为磁道号,随机生成时请避免出现大量连续相同数字。
(2)序列随机生成后,输出初始化的数据,并要求用户进行算法的选择,如
磁盘访问序列为:0,50,25,35。。。。(逗号间隔)
请选择要执行的磁盘寻道算法:1、FCFS;2、SSTF;3、SCAN;4、CSACN
如用户选择的不在范围内,要求用户重新输入,输出样例略。
(3)SCAN和CSCAN算法,应在用户选择该算法后,提示用户进一步选择当前磁头运动方向,如:
请继续选择当前磁头运动方向:1、由低到高;2、由高到低
(4)算法执行过程及输出
您选择了FCFS算法,执行结果如下:
当前磁道号 下一磁道号 绝对差
0 50 50
50 25 25
25 35 10
35 。。。 。。。
寻道序列总长**,FCFS算法的平均寻道长度为****。
您选择了SCAN算法,当前磁头运动方向为由低到高,执行结果如下:
当前磁道号 下一磁道号 绝对差
0 25 25
25 35 10
35 50 15
50 。。。 。。。
寻道序列总长**,SCAN(由低到高)算法的平均寻道长度为****。
算法执行结果输出完毕后,应提示用户,是否用同一组数据,继续其他算法,如:
本次计算已完成,请选择:1、继续尝试其他算法;2、更换数据;3、结束程序
五、实验代码及测试截图
要求:测试样例截图需提供所有系统功能的截图
代码:
(1)序列长度输入成功/错误截图
(2)算法选择成功/失败截图
(3)FCFS算法执行结果截图
(4)SSTF算法执行结果截图
(5)选择磁头运动方向截图
(6)SCAN算法执行结果截图
(7)CSCAN算法执行结果截图
(8)算法执行完毕后,选择功能截图
六、实验体会和收获
(自由发挥)