实验题目:
磁盘调度算法FCFS算法
实验内容:
磁盘访问序列和磁头起始位置(自己输入数据),采用SSTF磁盘调度算法,求平均寻道长度。
实验目的:
本课程设计的目的是通过磁盘调度算法设计一个磁盘调度模拟系统,从而使磁盘调度算法更加形象化,容易使人理解,使磁盘调度的特点更简单明了,能使使用者加深对先来先服务算法、最短寻道时间优先算法、扫描算法以及循环扫描算法等磁盘调度算法的理解
实验原理:问题分析及算法设计(流程图)
实验源代码:
#include <stdio.h>
#include <math.h>
#include <limits.h>
void FCFS(int m,int n,int track_number[]){
int fcfs_seq[100][2];
int pre_track_number = m;
double ave_seek = 0;
for(int i = 0; i < n; i++){
fcfs_seq[i][0] = track_number[i];
fcfs_seq[i][1] = abs(pre_track_number - track_number[i]);
pre_track_number = track_number[i];
ave_seek += fcfs_seq[i][1];
}
ave_seek /= n;
printf("\nFCFS寻道序列:\n");
for(int i = 0; i < n; i++){
printf("%d %d\n",fcfs_seq[i][0],fcfs_seq[i][1]);
}
printf("FCFS平均寻道:%0.2lf\n", ave_seek);
}
int main(){
int m;//磁道针起始位置
int n;//寻道的磁道数
int track_number[100];//
printf("输入磁道针起始位置:");
scanf("%d",&m);
printf("输入寻道的磁道数:");
scanf("%d",&n);
for(int i = 0; i < n; i++){
printf("输入第%d个磁道号的位置:",i+1);
scanf("%d",&track_number[i]);
}
FCFS(m,n,track_number);
}
实验结果:(截图)
实验总结:(心得体会)
过本次实验的具体操作,了解了磁盘调度的FCFS算法、SSTF算法、SCAN算法、CSCAN算法的具体代码和实现过程,掌握了不同的调度算法的各自特点,并与具体的理论知识相比较与验证,对掌握的理论知识有了更准确的理解。