os实验-Java模拟磁盘移臂调度SSTF,SCAN算法

本文详细介绍了如何使用Java实现磁盘移臂调度的SSTF和SCAN算法。内容包括数据结构定义、SSTF算法的逻辑(寻找最近磁道并更新移动状态)、SCAN算法的逻辑(根据标志决定寻道方向,并利用TreeMap保持顺序)。文章还提供了响应请求顺序、移臂总量的统计方法,并附有运行截图。源代码可在指定链接下载。
摘要由CSDN通过智能技术生成

内容和数据结构定义

能对两种算法给定任意序列不同的磁盘请求序列,显示响应磁盘请求的过程。
能统计和报告不同算法情况下响应请求的顺序、移臂的总量。

移臂结果类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
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值