磁盘调度算法剖析(FIFO、SSTF、SCAN、CSCAN、FSCAN)
https://blog.csdn.net/jaster_wisdom/article/details/52345674
#include <stdio.h>
#include <algorithm>
#include <string.h>
#define maxsize 1000 //定义最大数组域
//先进先出调度算法
void FIFO(int array[],int m)
{
int sum=0,j,i,now;
float avg;
printf("\n 请输入当前的磁道号:");
scanf("%d",&now);
printf("\n FIFO调度结果: ");
printf("%d ",now);
for(i=0; i<m; i++) printf("%d ",array[i]);
sum=abs(now-array[0]);
for(j=1; j<m; j++) sum+=abs(array[j]-array[j-1]); //累计总的移动距离
avg=(float)sum/m;//计算平均寻道长度
printf("\n 移动的总道数: %d \n",sum);
printf(" 平均寻道长度: %f \n",avg);
}
//最短服务时间优先调度算法
void SSTF(int array[],int m)
{
int temp;
int k=1;
int now,l,r;
int i,j,sum=0;
float avg;
for(i=0; i<m; i++)
{
for(j=i+1; j<m; j++) //对磁道号进行从小到大排列
{
if(array[i]>array[j])//两磁道号之间比较
{
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
for( i=0; i<m; i++) //输出排序后的磁道号数组
printf("%d ",array[i]);
printf("\n 请输入当前的磁道号:");
scanf("%d",&now);
printf("\n SSTF调度结果: ");
if(array[m-1]<=now)//判断整个数组里的数是否都小于当前磁道号
{
for(i=m-1; i>=0; i--) //将数组磁道