操作系统实验之磁盘调度

实验要求

  • 选择1~3种磁盘调度算法(先来先服务法、最短寻道时间优先、电梯算法)模拟实现磁盘调度;
  • 能够输入当前磁头的位置、磁头移动方向、磁道访问请求序列等;
  • 计算磁头移动的总磁道数;
  • 能够显示磁盘调度结果(磁头依次访问的磁道号顺序等)

我选择了先来先服务法FCFS、最短寻道时间优先SSTF、电梯算法SCAN三种调度算法,代码用Java实现。
源码已上传到本人github上,建议先看源码。

实验原理

代码结构

HardDrive类表示磁盘,其私有成员有tracks表示访问序列数组,trackSet表示磁道访问集合,用HashSet实现Set接口,headAt表示磁头处于磁道位置,direction表示在SCAN调度算法里磁头移动的方向,distance表示磁头移动的总距离,method表示调度方法

代码思路

整体思路

用tracks数组表示访问序列,用于FCFS调度。trackSet用于遍历访问序列,获得每次离磁头最近的磁道。headAt在每次移动磁头后记录位置,distance用来保存每次headAt移动前后距离的绝对值的累加和。
构造一个HardDrive对象,并将参数tracks、headAt、direction、method参数带入,根据调度方法不同输出不同的结果。

FCFS

先来先服务调度比较简单,用数组表示顺序访问序列,遍历数组,输出下一个数组元素i,计算数组该元素i和当前headAt距离并保存到distance中,修改磁头headAt位置。遍历结束后输出distance。

    private void FCFS() {
        System.out.print("寻道顺序为:" + headAt + " ");
        for (int i : tracks) {
            System.out.print(i + " ");
            this.distance += Math.abs(headAt - i);
            headAt = i;
        }
        System.out.println();
        System.out.println("总路程=" + 
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值