先来先服务:就是将申请磁盘服务的进程按先后顺序排队,每次调度选择位于队首的进程运行。假定当前磁头处于第10道,等待服务的进程有七个,它们请求的磁道顺序是8、5、24、6、18、36、16。可以计算所有进程运行后磁头一共移动的磁道数:
2+3+19+18+13+18+20=93
下面的程序是随机产生数字的,产生多少个有自己输入的数字决定。
#include<iostream>//使用结构化
#include<time.h>
#include<stdlib.h>
using namespace std;
#define Min //宏定义
#define Max 1//最大值最小值范围
int main()
{
cout<<"磁道个数:";
int N;
cin>>N;
int arr[N], m, min = 0, max = 100, i;
srand((unsigned)time(0));
time(0);//time(NULL)
for (i = 0; i<N; i++)
{
m = min + rand() % (max + min + 1); //随机产生100以内的随机数
arr[i] = m; //将随机数逐个赋值给数组arr[]
}
cout<<"磁道访问序列:";
for (i = 0; i < N; i++)//输出数组
{
cout <<arr[i] << " ";
}
cout<<'\n';
cout<<"请输入100以内开始的磁道号:" ;
int j;
cin>>j;
int sum=0;
for(int k=0;k<N-1;k++)
{
sum+=abs(arr[k+1]-arr[k]);
}
double totalstack=arr[0]-j+sum;//移动的磁道总数
double avgstack=totalstack/N;// 平均寻道总数
cout<<"移动的磁道总数="<<totalstack<<endl;
cout<<"平均寻道总数="<<avgstack<<endl;
}