磁盘调度算法的实现
一、实验目的:
通过模拟设计磁盘驱动调度程序,观察驱动调度程序的动态运行过程,理解和掌握磁盘驱动调度的职能,并比较各种算法的调度结果。
二、实验内容:
要求设计主界面能灵活选择某算法,且以下算法都要实现。
(1)先来先服务算法(FCFS)
(2)最短寻道时间优先算法(SSTF)
(3)扫描算法(SCAN)
(4)循环扫描算法(CSCAN)
三、实验步骤
(1)需求分析:
本设计中可在运行时随机产生一个请求序列,先把序列排序,以方便找到下一个要寻找的磁道。要求用户选择磁头移动方向,向里和向外移动用1和0表示,若输入值不为0或1,则报错。选择某种调度算法后,要求显示调度顺序和移动的总磁道数。
(2)详细设计:
void FCFS(int a[],int n);//先来先服务算法
void SSTF(int a[],int n);//最短寻道时间算法
void SCAN(int a[],int n);//扫描算法
void CSCAN(int a[],int n);//循环扫描算法
int main()
{
int n;//磁道的个数
int s;//功能号
cout<<"请输入磁道的个数:"<cin>>n;
int *a=new int[n];
cout<<"生成随机磁道号..."<srand((unsigned)time(NULL));
for(int i=0;i{
a[i]=(rand()%100)+1;
cout<}
cout<while(1)
{ cout<cout<<"1、先来先服务算法(FCFS)"<cout<<"4、循环扫描算法(CSCAN)"<cout<<"0、退出"<cout<cout<<"请选择功能号:";
cin>>s;
if(s>4)
{
cout<<"输入有误!"<}
else
{
switch(s)
{ case 0: exit(0);break ;
case 1:FCFS(a,n); break;
case 2:SSTF(a, n);break;
case 3:SCAN(a, n);break;
case 4:CSCAN(a,n);break;
}
}
}
return 0;
}
实验源代码
#include
#include
using namespace std;
void FCFS(int a[],int n);
void SSTF(int a[],int n);
void SCAN(int a[],int n);
void CSCAN(int a[],int n);
int main()
{
int n;//磁道的个数
int s;//功能号
cout<<"请输入磁道的个数:"<cin>>n;
int *a=new int[n];
cout<<"生成随机磁道号..."<srand((unsigned)time(NULL));
for(int i=0;i{
a[i]=(rand()%100)+1;
cout<}
cout<while(1)
{ cout<cout<<"1、先来先服务算法(FCFS)"<