資源簡介
含本人實驗報告,有具體流程圖,實驗課上寫的,有更好的想法可以提出,大家一起學習,賺點積分不容易 C語言編寫,調試過可運行,含實驗報告,含具體流程圖 ,有注釋和變量解釋,環境為VS2008 安徽大學操作系統實驗(八)基于掃描的磁盤調度算法,掃描算法(SCAN)和循環掃描算法(CSCAN),(實驗報告+運行結果+源代碼)

代碼片段和文件信息
//?oslab08_summary.cpp?:?定義控制臺應用程序的入口點。
//
#include?“stdafx.h“
#include?“math.h“
// int?wait_track[N]={555839189016015038184};
int?sever_num;//為需要通過調度算法進行訪問的磁道個數
int?START_LIFT;//START_LIFT用來存放初始磁道號,即從第幾道磁道號開始掃描訪問
int?wait_track[100]={0};//wait_track數組用來存放需要服務的磁道號隊列
int?floor_num;//floor_num為正在被掃描的磁道號,每掃描一次,floor_num的步長為step,step可為+1或-1
int?last_served;//存放剛剛服務過的磁道號,last_served的初始值即為開始掃描的磁道號
int?pre_direction=1;//1為磁道號增加方向,-1為磁道號減小方向
int?step=pre_direction;//初始方向,向磁道數增加的方向掃描
int?CLOCK=0i;//CLOCK用來存放已經服務過的磁道號個數,最大值為需要服務的磁道號隊列中磁道號個數
int?served_queue[100]={0};//用來存放服務過的磁道號
int?move_distance[100];//用來存放每次到達目標磁道號,磁頭的移動距離
double?sum_distance=0;//sum_distance用來存放所有移動距離之和
int?choice;//在主函數中用來選擇相應磁盤調度算法,對需要服務的磁道號隊列進行服務
int?flag=1;//flag為0時,作為主函數中執行算法的停止條件
void?cscan(){//循環掃描算法CSCAN
while(CLOCK {
floor_num=floor_num+step;//floor_num為正在被掃描的磁道號每掃描一次,floor_num的步長為step
for?(i=0;i {
if(floor_num==wait_track[i])//若當前正在被掃描的磁道號是為需要服務的磁道號
{
served_queue[CLOCK]=wait_track[i];//將服務過的磁道號放入served_queue數組中存儲
move_distance[CLOCK]=labs(last_served-wait_track[i]);//將此次服務的磁頭移動距離,放入move_distance數組中存儲
last_served=wait_track[i];//修改last_served的值,last_served變量存放剛剛服務過的磁道號,
wait_track[i]=0;//將剛剛訪問過的磁道號移除訪問隊列,這里將wait_track數組中存放的磁道號置零
CLOCK++;//CLOCK用來存放已經服務過的磁道號個數,CLOCK表示已經服務過的磁道號個數增加一個
break;//跳出for循環,繼續進行掃描
}
}
if(pre_direction==1)//若CSCAN算法規定的初始方向為磁道號增加的方向,則在當前磁道號到達最大值200后,回到磁道號最小值0再進行重新進行掃描
{
if(floor_num>=200)
{
floor_num=0;
}
}
else//若CSCAN算法規定的初始方向為磁道號增加的方向,則在當前磁道號到達最大值0后,回到磁道號最大值200再進行重新進行掃描
{
if(floor_num<=1)
{
floor_num=200;
}
}
}
}
void?scan()//掃描算法SCAN
{
while(CLOCK {
if(floor_num>=200)//若磁頭掃描已經到達最大磁道號,則改變磁頭掃描方向,即向磁道號減小的方向掃描
{step?=?-1;}
if(floor_num<=1)//若磁頭掃描已經到達最小磁道號,則改變磁頭掃描方向,即向磁道號增加的方向掃描
{step?=?1;}
floor_num=floor_num+step;//floor_num為正在被掃描的磁道號每掃描一次,floor_num的步長為step
for?(i=0;i {
if(floor_num==wait_track[i])//若當前正在被掃描的磁道號是為需要服務的磁道號
{
served_queue[CLOCK]=wait_track[i];//將服務過的磁道號放入served_queue數組中存儲
move_distance[CLOCK]=labs(last_served-wait_track[i]);//將此次服務的磁頭移動距離,放入move_distance數組中存儲
last_served=wait_track[i];//修改last_served的值,last_served變量存放剛剛服務過的磁道號,
wait_track[i]=0;//將剛剛訪問過的磁道號移除訪問隊列,這里將wait_track數組中存放的磁道號置零
CLOCK++;//CLOCK用來存放已經服務過的磁道號個數,CLOCK表示已經服務過的磁道號個數增加一個
break;//跳出for循環,繼續進行掃描
}
}
}
}
void?display()//顯示磁盤調度算法調度后的結果
{
printf(“*******調度結果如下*********\n“);
printf(“從%d號磁道開始\n“START_LIFT);
if(pre_direction==1)
printf(“向磁道數增加的方向掃描\n“);
else
printf(“向磁道數減小的方向掃描\n“);
printf(“被訪問的下一個磁道號 移動距離(磁道數)\n“);
for(i=0;i {
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????35328??2018-12-05?15:30??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\Debug\oslab08_summary.exe
?????文件?????347860??2018-12-05?15:30??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\Debug\oslab08_summary.ilk
?????文件?????470016??2018-12-05?15:30??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\Debug\oslab08_summary.pdb
?????文件??????10124??2018-12-05?15:30??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\BuildLog.htm
?????文件?????????65??2018-12-05?15:30??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\mt.dep
?????文件????????663??2018-12-05?12:59??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.exe.em
?????文件????????728??2018-12-05?12:59??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.exe.em
?????文件????????621??2018-12-05?15:30??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.exe.intermediate.manifest
?????文件??????15592??2018-12-05?15:30??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.obj
?????文件????3211264??2018-12-05?12:59??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\oslab08_summary.pch
?????文件??????12053??2018-12-05?12:59??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\stdafx.obj
?????文件??????76800??2018-12-05?15:30??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\vc90.idb
?????文件?????126976??2018-12-05?15:30??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\Debug\vc90.pdb
?????文件???????5355??2018-12-05?15:30??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\oslab08_summary.cpp
?????文件???????4522??2018-12-04?23:14??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\oslab08_summary.vcproj
?????文件???????1403??2018-12-05?15:44??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\oslab08_summary.vcproj.C25.ACER.user
?????文件???????1427??2018-12-05?13:02??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\oslab08_summary.vcproj.DESKTOP-L85K5HC.Precious.user
?????文件???????1231??2018-12-04?23:14??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\ReadMe.txt
?????文件????????220??2018-12-04?23:14??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\stdafx.cpp
?????文件????????233??2018-12-04?23:14??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\stdafx.h
?????文件????????498??2018-12-04?23:14??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary\targetver.h
?????文件?????732160??2018-12-05?15:44??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary.ncb
?????文件????????911??2018-12-04?23:14??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary.sln
????..A..H.?????25600??2018-12-05?15:44??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab08_summary\oslab08_summary.suo
?????文件??????31232??2018-12-03?17:19??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab8_scan_01\Debug\oslab8_scan_01.exe
?????文件?????309532??2018-12-03?17:19??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab8_scan_01\Debug\oslab8_scan_01.ilk
?????文件?????461824??2018-12-03?17:19??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab8_scan_01\Debug\oslab8_scan_01.pdb
?????文件???????6780??2018-12-03?17:19??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab8_scan_01\oslab8_scan_01\Debug\BuildLog.htm
?????文件?????????65??2018-12-03?17:19??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab8_scan_01\oslab8_scan_01\Debug\mt.dep
?????文件????????663??2018-12-03?17:15??實驗8實驗7基于掃描的磁盤調度算法——掃描算法(SCAN)和循環掃描算法(CSCAN)\oslab8_scan_01\oslab8_scan_01\Debug\oslab8_scan_01.exe.em
............此處省略59個文件信息
評論
共有 條評論