内容和数据结构定义
能对两种算法给定任意序列不同的磁盘请求序列,显示响应磁盘请求的过程。
能统计和报告不同算法情况下响应请求的顺序、移臂的总量。
移臂结果类Result定义
public class Result {
public int magNum;
public int dist;
public Result(int magNum, int dist) {
this.magNum = magNum;
this.dist = dist;
}
}
Queue<Result> result, 存放每次移动的结果
List<Integer> reqOrder, 磁盘请求序列
TreeMap<Integer, Integer> map, 用在 scan 算法中, 保存某个方向上的磁头移动顺序
SSTF
根据传入参数 base 值确定磁针初始位置, 再从磁道请求序列中找出距 base 最近的磁道, 进行移
动, 创建移动结果 Result 对象, 并更新 base 值. 最后打印统计信息.
public static void sstf(List<Integer> reqOrder, int base) {
if (reqOrder == null || reqOrder.size() < 1 || base < 0) {
throw new IllegalArgumentException("非法参数");
}
while (reqOrder.size() > 0) {
int minDist = Integer.MAX_VALUE; //最小寻道距离
int minIndex = 0; //对应的索引
Iterator<Integer> it = reqOrder.iterator();
int i = -1