• 大小: 114KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: 其他
  • 标签:

资源简介

(1)设计并实现了一个函数,完成先来先服务的磁盘调度功能 (2)设计并实现了一个函数完成最短寻道时间优先的磁盘调度功能。 (3)设计并实现了一个函数完成电梯算法的磁盘调度功能。

资源截图

代码片段和文件信息

#include
#include
#include
 void FCFS(int array[]int m)// 先来先服务算法
{    int jinow;
 float sum = 0avg;
     cout<<“输入当前的磁道号:“;//输入当前磁道号
     cin>>now;
 sum=abs(now-array[0]);
     cout<<“先来先服务算法(FCFS)调度后的序列为“<     for(i=0j=1;j  {
      sum=sum+abs(array[j]-array[i]);
  cout<  }
     avg=sum/(m);
     cout<}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SSTF(int array[]int m)// 最短寻道时间优先算法
{     int temp;
      int k=1;
      int nowlr;
      int ij;
  float sum=0avg=0;
      for(i=0;i      for(j=i+1;j   {
        if(array[i]>array[j]) //将磁道号从小到大排序
{
           temp=array[i];
           array[i]=array[j];
           array[j]=temp;
}
  } 
      cout<<“请输入当前的磁道号:“; //输入当前磁道号
      cin>>now;
  cout<<“最短寻道时间优先算法(SSTF)调度后的序列为“;//输出磁盘调度序列
      if(array[m-1]<=now)  //若被访问的下一最大的磁道号不大于当前的磁道号
  {  
         for(i=m-1;i>=0;i--)
         { cout<    sum=now-array[i]; 
   now=array[i];
 }
  }
      else
  {
if(array[0]>=now)  //若被访问的下一最小的磁道号不小于当前的磁道号
{  
          for(i=0;i          {  cout<             sum=array[i]-now;
 now=array[i];
  }
}
        else  //当前的磁道号的值在若所有被访问的下的磁道号之间
{
           while(array[k]    {  k++; }
           l=k-1;
           r=k;
   if((now-array[l])<=(array[r]-now)) 
   {
  while(l>=0)    //先向磁道号减小方向访问
  {
cout<                sum=sum+now-array[l];
                now=array[l];
                l=l-1;
  }
  now=array[0];
  for(j=r;j   {  cout<      sum+=array[j]-now;
      now=array[j];
  }
   }
   else   //先向磁道号增加方向访问
   {
  while(r              {
                 cout<                 sum+=array[r]-now;
                 now=array[r];
                 r=r+1;
  }
  now=array[m-1]; 
  for(j=l;j>=0;j--)  //再向磁道号减小方向访问
  {  cout<      sum+=now-array[j];
      now=array[j];
  }
   } 
}
  }
    avg=sum/(m);
    cout<}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SCAN(int array[]int m)  //扫描算法
{     int temp;
      int k=1;
      int nowdlr;
      int ij;
  float sum=0avg=0;
      for(i=0;i      for(j=i+1;j   {
        if(array[i]>array[j]) //将磁道号从小到大排序
{
           temp=array[i];
           array[i]=array[j];
           array[j]=temp;
}
  } 
      cout<<“请输入当前的磁道号:“;//输入当前磁道号
      cin>>now;
  cout<<“请输入当前移动臂的移动的方向(1 表示向磁道

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

     文件       6057  2010-12-28 09:49  磁盘调度\DiskScheduling.cpp

     文件     212992  2010-12-28 09:41  磁盘调度\磁盘调度实验报告.doc

     目录          0  2010-12-28 10:05  磁盘调度

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

               219049                    3


评论

共有 条评论

相关资源