磁盘调度可视化实现

文章介绍了如何使用程序模拟磁盘调度过程,包括FCFS、SSTF、SCAN和CSCAN四种算法,并以SSTF为例展示了代码实现。程序允许用户自定义磁道范围,并计算平均寻道数。测试结果显示了SSTF算法的寻道顺序和预期输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如需源码请关注并私信博主哦(本文实现了先来先服务算法(FCFS),最短寻道时间优先算法(SSTF),扫描算法(SCAN),循环扫描算法(CSCAN)

【设计目的】

掌握文件的存取方法;掌握文件的逻辑结构和物理结构;掌握存储空间的分配和回收;掌握磁盘管理与调度。

【设计内容】

用程序模拟磁盘的调度过程,并计算各磁盘调度算法包括先来先服务算法、最短寻道时间优先算法、扫描算法和循环扫描算法的平均寻道长度。

【设计步骤】

  1. 分析常用的磁盘调度算法,熟悉其基本原理。

(篇幅有限,以SSTF算法为例)

  1. 用提供的GUI界面自行设定起始扫描磁道号及最大磁道号数,程序根据设定值产生磁道号进行模拟。
  2. 编写程序实现磁盘调度算法,并显示该算法寻道顺序并计算出寻道总数和平均寻道数;
static int[] a;
static Integer direction;
static String master;
static int first;


static int[] SSTF(int a[],int index){
   if (a[index]==a[0]){
      //不做变化

   }else if (a[index]==a[a.length-1]){
      //数组对调
      for (int start = 0, end = a.length - 1; start < end; start++, end--) {
         int temp = a[end];
         a[end] = a[start];
         a[start] = temp;
      }

   }else {
      //int c[a.length-1];
      int []c = Arrays.copyOf(a,a.length);      //数组复制,不能直接复制!!!
      a[0] = c[index];
      int left=index-1,right=index+1;       //左右指针

      for (int i = 1; i < a.length;i++) {

         if ((c[index] - c[left]) > (c[right] - c[index])) {            //index右移一位

            if (c[right] < c[c.length - 1]) {

               a[i] = c[right];
               index = right;
               right++;
            } else {
               a[i] = c[c.length - 1];                //到右端点又变成SCAN
               for (int k = 1; c[left] > c[0]; k++) {
                  a[i + k] = c[left];
                  left--;
               }
               break;
            }

         } else {
            if (c[left] > c[0]) {
               a[i] = c[left];
               index = left;
               left--;
            }else{
                  a[i] = c[0];                //到左端点又变成SCAN
                  for (int k = 1; c[right] < c[c.length - 1]; k++) {
                     a[i + k] = c[right];
                     right++;
                  }
                  break;
               }
            }
         }

      }
   return a;
}
 

  1. 测试并运行程序,给出运行界面。

以SSTF为例:

磁道访问序列: 55 58 39 18 90 160 150 38 184

预期输出:100  90  58  55  39  38  18  150  160  184

测试结果

主界面

运行效果 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轻歌吟松风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值