磁道管理:先来先服务(FCFS)

先来先服务:就是将申请磁盘服务的进程按先后顺序排队,每次调度选择位于队首的进程运行。假定当前磁头处于第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;
	
}  


猜你喜欢

转载自blog.csdn.net/sinat_40959511/article/details/80358227