資源描述:
《磁盤調(diào)度算法的模擬》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、OS實(shí)驗(yàn)六(軟件)2010.12.11磁盤調(diào)度算法的模擬實(shí)驗(yàn)要求:n請分別用SCAN和SSTF模擬磁盤調(diào)度,并打印出磁盤磁道的調(diào)度順序。n磁頭的方向可以動態(tài)的規(guī)定n磁道請求個數(shù)及序列可以動態(tài)地寫入n總結(jié)收獲體會及對該題解的改進(jìn)意見和見解(一)分析題意得模型利用數(shù)組相關(guān)知識SCAN算法:先將請求的磁道序列排序,以當(dāng)前磁道號將該序列分界,根據(jù)當(dāng)前磁道移動方向決定先讀左邊的還是先讀右邊的SSTF算法:先將請求的磁道序列排序,以當(dāng)前磁道號將該序列分界,然后當(dāng)前磁道號分別與左邊、右邊磁道作差比較,選作差最小
2、的,也即最短的。并修改當(dāng)前磁道號及其訪問位(1為已訪問完,0為未訪問)。(注:還要考慮左邊或右邊沒有磁道的情況,如何確定所要與之比較的磁道)利用數(shù)組相關(guān)知識(二)寫主要算法思路詳見源程序及注釋分類(三)調(diào)試運(yùn)行(多種情況都要運(yùn)行)OS實(shí)驗(yàn)六(軟件0967020050)今日8/28/2021OS實(shí)驗(yàn)六(軟件)2010.12.11(圖SSTF1.當(dāng)前磁道號在已排序的磁道請求序列中間的運(yùn)行結(jié)果)(圖SSTF2當(dāng)前磁道號在已排序的磁道請求序列最右邊的運(yùn)行結(jié)果)(圖SSTF2當(dāng)前磁道號在已排序的磁道請求序列
3、最左邊的運(yùn)行結(jié)果)(四)體會OS實(shí)驗(yàn)六(軟件0967020050)今日8/28/2021OS實(shí)驗(yàn)六(軟件)2010.12.111.先找到問題思路,然后運(yùn)用所學(xué)知識,SCAN算法用數(shù)組實(shí)現(xiàn)較為簡單,問題不大。2.SSTF算法的情況分類需花點(diǎn)腦子,只需讓當(dāng)前磁道號分別與左邊、右邊磁道作差比較,用數(shù)組實(shí)現(xiàn)還需再加一個數(shù)組設(shè)置該磁道是否被訪問,若用雙向鏈表實(shí)現(xiàn),可把已訪問的磁道號釋放掉,只需讓當(dāng)前磁道號分別與前驅(qū)、后驅(qū)磁道作差比較,用鏈表實(shí)現(xiàn)可減少用數(shù)組實(shí)現(xiàn)時不斷去判斷該磁道是否訪問的時間。在這一方面,雙
4、向鏈表實(shí)現(xiàn)應(yīng)該會比數(shù)組實(shí)現(xiàn)更有效率。SCAN源代碼:#includevoidmain(){intm=0,n,Seek[100],SCurrent,t,i=0,j,k,option;printf("請輸入當(dāng)前的磁道號:");scanf("%d",&SCurrent);printf("----1.向磁道號增加的方向訪問t2.向磁道號減少的方向訪問----");printf("---請選擇的當(dāng)前磁頭移動方向(1/2):");scanf("%d",&option);printf
5、("請輸入磁道請求序列(以-999結(jié)束):");scanf("%d",&n);while(n!=-999){Seek[i]=n;m++;i++;scanf("%d",&n);}/*冒泡排序使磁道請求序列從小到大排序*/for(j=0;jSeek[i+1]){OS實(shí)驗(yàn)六(軟件0967020050)今日8/28/2021OS實(shí)驗(yàn)六(軟件)2010.12.11t=Seek[i];Seek[i]=Seek[i+1];
6、Seek[i+1]=t;}}/*找到當(dāng)前磁道號在磁道請求序列中的排序位置*/k=0;for(i=0;i=0;i--)printf("%
7、5d",Seek[i]);}/*第二種:當(dāng)前磁道號先向里再向外讀*/if(option==2){for(i=k-1;i>=0;i--)printf("%d",Seek[i]);for(i=k;ivoidmain(){intm=0,n,Seek[100],Flag[1
8、00],SCurrent,t,i=0,j,k,i0,j0;printf("請輸入當(dāng)前的磁道號:");scanf("%d",&SCurrent);printf("請輸入磁道請求序列(以-999結(jié)束):");scanf("%d",&n);while(n!=-999){Seek[i]=n;m++;i++;scanf("%d",&n);}/*初始化置對應(yīng)的磁道訪問位為零*/for(i=0;i