資源簡介
(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
- 上一篇:深信服ac高級a卷
- 下一篇:數據結構課程設計——校園導游
評論
共有 條評論