先简单介绍一下这几种算法:
1、先来先服务:最早提交最早访问。
例如:磁盘访问序列:98,183,37,122,14,124,65,67。
读写头起始位置:53磁道处。
走道顺序:53,98,183,37,122,14,124,65,67
磁头走过的总道数:640
2、最短寻道时间优先:离读写头最近的最早访问。
例如:磁盘访问序列:98,183,37,122,14,124,65,67。
读写头起始位置:53磁道处。
走道顺序:53, 65,67,37,14,98, 122, 124, 183
磁头走过的总道数:236
3、电梯算法:先访问读写头以下的,再访问读写头以上的。
例如:磁盘访问序列:98,183,37,122,14,124,65,67。
读写头起始位置:53磁道处。
走道顺序:53, 37,14, 65,67, 98, 122, 124, 183
磁头走过的总道数:=(53-14)+(183-14)= 208
源代码:
#include<iostream>
#include<stack>
#include<algorithm>
using namespace std;
#define NUM 8
void Read(int *a,int &head)
{
cout<<"磁盘访问序列:";
for(int i=0;i<NUM;i++)
cin>>a[i];
cout<<"\n磁头位置:";
cin>>head;
}
void Write(int *a,int &sum,int &head)
{
cout<<"走道顺序:"<<