磁盘寻道算法实验报告.pdfVIP

  • 19
  • 0
  • 约9.62千字
  • 约 10页
  • 2021-10-02 发布于湖北
  • 举报
操作系统实验报告四 [实验题目 ] 磁盘调度算法 SSTF、SCAN 、C-SCAN [实验目的 ] 通过设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化, 容易理解, 使磁盘调度的特点更简单明了, 能使使用者加深对最短寻 道时间优先算法、扫描算法以及循环扫描算法的理解。 [实验内容 ] 编程实现如下内容: 1. 最短寻道时间优先算法( SSTF); 2. 扫描算法( SCAN )(又叫电梯调度算法); 3. 循环扫描算法( CSCAN ) 代码如下: #define _CRT_SECURE_NO_WARNINGS #includestdio.h #includestdlib.h #includetime.h #includeWindows.h /* 最短寻道时间函数 SSTF*/ void SSTF(int a[], int n){ int temp; int now; int sum = 0, i, j, k=0; // 冒泡排序法对磁道号进行排序 printf( 排序后的磁道分布: \n); for (i = 0; i n; i++){ for (j = i + 1; j n; j++){ if (a[i]a[j]){ temp = a[i]; a[i] = a[j]; a[j] = temp; } } printf(%d \t, a[i]); if (i % 10 == 9){ printf(\n); } } printf(\n); printf( 请输入当前磁道号 :\n); scanf(%d, now); if (a[0] =now){ printf( 当前访问的磁道 %d\n, a[0]); for (i = 0; i n-1; i++){ printf( 当前访问的磁道: \t%d\n,a[i+1]); } sum = a[n - 1] - now; printf( 移动的总磁道数: %d\n, sum); } else if (a[n - 1] = now){ printf( 当前访问的磁道: %d\n, a[n-1]); for (j=n-1; in-1;j--){ printf( 当前访问的磁道: \t%d\n,a[j-1]); } sum = now-a[0]; printf( 移动的总磁道数: %d\n, sum); } else{ while (a[k] now){ k++; } j = k-1; i = 0; while ((j=0)(kn)){ i++; if (now - a[j] = a[k] - now){ printf( 当前访问的磁道: \t%d\n, a[k]); sum += a[k] - now; now = a[k]; k++; } else{ printf( 当前访问的磁道: \t%d\n, a[j]); sum += now - a[j]; now = a[j]; j--; } } if (k

文档评论(0)

1亿VIP精品文档

相关文档