void CSAN() { printf("循环扫描 CSAN(从%d号磁道开始)\n",kai); printf("----------------------------------------------------\n"); printf("被访问的下一个磁道:\t\t\t磁道号移动距离:\n"); int su=kai; int j=0; int s2[100]; sum=0; //把c2添加到s2中,c1按照相反的顺序添加 for(int i=0;i<n;i++) s2[i] =c2[i]; for(int i=m-1;i>=0;j++,i--) s2[j+n]=c1[i]; for(int i=0;i<num;i++) { if(su<s2[i]) s1[i]=s2[i]-su; else s1[i]=su-s2[i]; su=s2[i]; sum+=s1[i]; } for(int i=0;i<num;i++) {printf("\t%d\t\t\t\t\t%d\t\t\n",s2[i],s1[i]); } printf("寻道长度:%d\n",sum); avg4=(double)sum/num; printf("平均寻道长度:%.2lf\n",avg4); arr[3]=avg4; }
时间: 2024-03-03 07:52:17 浏览: 97
csan-labworks:此存储库包含有关“计算机系统和网络”学科的实验室工作
这段代码实现的是循环扫描算法(C-SCAN)的磁盘调度。其中,变量`kai`表示起始磁道号,变量`c1`和`c2`分别为需要访问的磁道号序列,变量`num`表示磁道数目,变量`sum`表示总寻道长度,变量`avg4`表示平均寻道长度。
该算法的实现过程如下:
1. 将磁道号序列`c1`按相反的顺序添加到磁道号序列`s2`中,同时将磁道号序列`c2`添加到`s2`中。
2. 对于每个磁道号`s2[i]`,计算它与前一个磁道号`s2[i-1]`之间的距离,即移动距离`s1[i]`。
3. 输出每个磁道号`s2[i]`和对应的移动距离`s1[i]`,并计算总寻道长度`sum`和平均寻道长度`avg4`。
4. 将平均寻道长度`avg4`保存到数组`arr`的第4个位置(下标为3)上。
阅读全文