资源简介
(1) 实现的磁盘调度算法有FCFS,SSTF,SCAN,CSCAN和 NStepSCAN算法。
(2) 设定开始磁道号寻道范围,依据起始扫描磁道号和最大磁道号数,随机产生要进行寻道的磁道号序列。
(3) 选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#define disknum 20
#define INF 0x7fffffff
/*
(1) 实现的磁盘调度算法有FCFS,SSTF,SCAN,CSCAN和 NStepSCAN算法。
(2) 设定开始磁道号寻道范围,依据起始扫描磁道号和最大磁道号数,随机产生要进行寻道的磁道号序列。
(3) 选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。
这个确实是最简单的,不过刚开始想生成不同的随机数,有点麻烦,就没有做了
*/
using namespace std;
void FCFS(int begin int disk[])
{
cout< cout<<“***********************FCFS 算法***************************\n“;
int len = 0;
int sum = 0 temp = begin;
cout<<“磁道访问顺序为:“< while(len < disknum)
{
cout< sum += abs(temp - disk[len]);
temp = disk[len];
len++;
}
cout< cout<<“移动的磁道总数为: “< }
struct val
{
int item;
int min;
int temp ;
}; // 获取临时最近的下标和值和距离
val getClose(int num int disk[] int len val v)
{
int array[len] min = INF item = 0;
for(int i = 0 ; i < len; i++)
{
array[i] = abs(num - disk[i] );
if(array[i] < min)
{
min = array[i];
item = i;
}
}
v.item = item;
v.min = min;
v.temp = disk[item];
return v;
}
void SSTF(int begin int disk[])
{
cout< cout<<“***********************SSTF 算法***************************\n“;
int len = disknum i sum = 0 temp = begin;
int arr[len];
for( int j = 0; j < len; j++)
arr[j] = disk[j];
cout<<“磁道访问顺序为:“< while(len != 0)
{
val v;
v = getClose(temp arr len v);
// cout< cout< sum = sum + v.min;
temp = v.temp;
for( i = v.item + 1; i < len ;i++)
arr[ i - 1] = arr[i];
len--;
}
cout< cout<<“移动的磁道总数为: “<
}
void SCAN(int begin int disk[])
{
cout< cout<<“***********************SCAN 算法***************************\n“;
int arr[disknum] ;
int len = disknum i sum = 0 temp = begin;
for( i = 0; i < len; i++ )
arr[i] = disk[i];
sort(arr arr + len less());
val v = getClose(begin arr len v);
cout<<“磁道访问顺序为:“< for( i = v.item; i < len; i++ ) //假定沿着磁道号增加的顺序移动
{
cout< sum += abs(temp - arr[i]);
temp = arr[i];
}
for ( i = v.item - 1; i >= 0; i-- )
{
cout< sum += abs(temp - arr[i]);
temp = arr[i];
}
cout< cout<<“移动的磁道总数为: “<
}
void CSCAN(int begin int disk[])
{
cout<
评论
共有 条评论