• 大小: 876KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-07
  • 语言: 其他
  • 标签: 扫描算法  

资源简介

描编程序实现磁盘调度算法,并求出每种算法的平均寻道长度。设计要求: (1)能够输入程序要访问的磁道序列或系统自动生成程序要访问的磁道序列和磁头当前所在的磁道数。 (2)可以选择某磁盘调度算法(先来先服务算法、最短寻道时间优先算法、扫描算法和循环扫描算法)。 (3)能够以图表形式显示磁盘调度顺序和平均寻道长度。

资源截图

代码片段和文件信息

#include
#include
using namespace std;

int M=1000;
int N=1000;
int  Page[100];//磁道数组
int  Move[100];//访问数组
int move[100];//移动距离数组
void FCFS( );//先来先服务
void SSTF( );//最短寻到时间优先
void SCAN( );//扫描算法
void CSCAN( );//循环扫描算法
void input();//输入
void init();//更新
void output();//输出

// 9 2 55 58 39 18 90 160 150 38 184 100 

int main(){
   int option=1;
   cout<<“*************模拟磁盘调度过程算法*************“<   input();
   int T=1;
   while(T){
   cout<<“**************************************************************“<    cout<<“    0.exit   1.FCFS   2.SSTF   3.SCAN   4.CSCAN   5.return    “<       cout<<“**************************************************************“<       cout<<“请选择要用的功能号(0~5):“;cin>>option;
       switch (option){
   case 0:cout<<“**********模拟磁盘调度过程结束欢迎提出宝贵意见!**********“<    case 1: cout<<“                      先来先服务算法\n“<    case 2: cout<<“                   最短寻道时间优先算法\n“<    case 3: cout<<“                         扫描算法\n“<    case 4: cout<<“                       循环扫描算法\n“<    case 5: input();break;
   default: cout<<“输入的功能号无效请正确选择功能号(0-5)!“<    }
   }
return 0; 
}
void input(){ //页面数组初始化函数及输出界面
cout<<“请输入模拟磁道的个数:“;int m;cin>>m;M=m;
int z=1;int option=1;
while(option){
cout<<“请对模拟磁道序列的输入方式进行选择(1自动产生、2手动输入):“;//选择初始化方式automatic or give
cin>>z;
switch (z){
case 1:{  //系统自动随机初始化
for(int x=0;x Page[x]=rand()%9+1;
}
cout<<“系统自动产生的磁道序列如下:“< for(x=0;x cout< }
cout< z=0;option =0;
}
break;
case 2:{
cout<<“请输入手动生成的磁道序列:“;  //人工输入初始化
for(int i=0;i cin>>Page[i];
}
z=0;option =0;
   }
break;
default: cout<<“输入的功能号无效请正确选择功能号(1或2)!“< }
}

int now=0;
cout<<“请输入当前磁道号:“;
    cin>>now; N=now;
int i;
for( i=0 ;i     Move[i]=Page[i]; 
   }

}
void output(){
int i;int j;
for( i=0j=1;i //cout< printf(“%5d“Move[i]);
move[j]=abs(Move[j]-Move[i]);
}
move[0]=abs(N-Move[0]);
cout<< “ 平均寻道长度“< cout<<“ “< int sum=0;
for( i=0;i //cout< printf(“%5d“move[i]);
sum=sum+move[i];
}
float averag=float(sum)/M;
 
printf(“  %7.1f“averag);
cout<< endl;
}

void FCFS( ){//先来先服务 FCFS
cout<<“ FCFS“;

}
void init(){
for(int i=0 ;i Move[i]=0; 
}
for( i=0 ;i move[i]=0; 
}
for( i=0 ;i     Move[i]=Page[i]; 
}
}

void SSTF( ){//最短寻道时间算法  SSTF
   int templrji;int now= N;int k=1;int sum=0;int a[100];//用来对访问数组交换时用
   for(i=0;i    for(j=i+1;j    if(Move[i]>Move[j]){
   temp=Move[i];
   Move[i]=Move[j];
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      74752  2010-12-17 12:50  磁盘调度\Debug\vc60.idb

     文件     110592  2010-12-17 12:50  磁盘调度\Debug\vc60.pdb

     文件     553030  2010-12-17 12:50  磁盘调度\Debug\磁盘调度算法.exe

     文件     793760  2010-12-17 12:50  磁盘调度\Debug\磁盘调度算法.ilk

     文件     261290  2010-12-17 12:50  磁盘调度\Debug\磁盘调度算法.obj

     文件    2001404  2010-12-17 12:50  磁盘调度\Debug\磁盘调度算法.pch

     文件    1098752  2010-12-17 12:50  磁盘调度\Debug\磁盘调度算法.pdb

     文件       6184  2010-12-16 16:15  磁盘调度\磁盘调度算法.cpp

     文件       3475  2010-12-17 12:50  磁盘调度\磁盘调度算法.dsp

     文件        549  2010-12-17 12:50  磁盘调度\磁盘调度算法.dsw

     文件      33792  2010-12-17 12:50  磁盘调度\磁盘调度算法.ncb

     文件      48640  2010-12-17 12:50  磁盘调度\磁盘调度算法.opt

     文件        776  2010-12-17 12:50  磁盘调度\磁盘调度算法.plg

     目录          0  2010-12-17 12:50  磁盘调度\Debug

     目录          0  2010-12-17 12:50  磁盘调度

----------- ---------  ---------- -----  ----

              4986996                    15


评论

共有 条评论