資源簡介
移動臂調(diào)度算法,先來先服務(wù)算法FCFS,最短尋道時間優(yōu)先調(diào)度算法SSTF,掃描調(diào)度算法SCAN,循環(huán)掃描調(diào)度算法CSCAN

代碼片段和文件信息
package?edu.swj;
import?javax.swing.JOptionPane;
import?javax.swing.JPanel;
public?class?Algorithm?extends?JPanel?{
LogPane?log;
public?Algorithm()?{
log?=?LogPane.getLog();
}
/*?冒泡排序算法?*/
int[]?bubble(int?cidao[]?int?m)?{
int?i?j;
int?temp;
for?(i?=?0;?i? for?(j?=?i?+?1;?j? if?(cidao[i]?>?cidao[j])?{
temp?=?cidao[i];
cidao[i]?=?cidao[j];
cidao[j]?=?temp;
}
}
return?cidao;
}
/*?先來先服務(wù)算法?*/
//順序訪問
public?void?FCFS(int?cidao[]?int?now)?throws?InterruptedException?{?//?磁道號數(shù)組,個數(shù)為M
int?sum?=?0;//?總尋道長度
int?i?j;
int?count?=?0;
int?len?=?0;
float?ave;//?平均尋道長度
sum?+=?Math.abs(cidao[0]?-?now);?//計算長度
count?=?count?+?1;
String?buffer?=?““;
for?(i?=?0;?i? if?(cidao[i]?>?0)?{
len++;
buffer?+=?cidao[i]?+?“?“;
System.out.println(“當(dāng)前磁道:“?+?cidao[i]);
Thread.sleep(500);
}
}
log.addLog(“磁盤掃描序列為:?“?+?buffer.toString());
for?(i?=?0?j?=?1;?j? sum?+=?Math.abs(cidao[j]?-?cidao[i]);
count++;
}
ave?=?sum?/?len;
log.addLog(“總道數(shù):“?+?sum);
log.addLog(“平均尋道長度:“?+?ave);
}
/*?最短尋道時間優(yōu)先調(diào)度算法?*/
//優(yōu)先訪問距當(dāng)前磁頭最近的磁道
public?void?SSTF(int?cidao[]?int?now)?throws?InterruptedException?{
int?len?=?0;
int?i?sum?=?0;
int?a?count?=?0;
float?ave;
//獲取磁道個數(shù)
for?(i?=?0;?i? if?(cidao[i]?>?0)?{
len++;
}
}
cidao?=?bubble(cidao?len);?//?調(diào)用冒泡排序算法排序
String?s?=?““;
for?(int?z?=?0;?z? s?+=?cidao[z]?+?“?“;
}
log.addLog(“磁道序列從小到大排序為:“?+?s);
if?(cidao[len?-?1]?<=?now)?//?若當(dāng)前磁道號大于請求序列中最大者則直接由外向內(nèi)依次給予各請求服務(wù)
{
String?buffer?=?““;
for?(i?=?len?-?1;?i?>=?0;?i--)?{
buffer?+=?cidao[i]?+?“?“;
System.out.println(“當(dāng)前磁道:“?+?cidao[i]);
Thread.sleep(500);
}
log.addLog(“磁盤掃描序列為:?“?+?buffer.toString());
sum?=?now?-?cidao[0];
count?=?len;
}
if?(cidao[0]?>=?now)?{?//?若當(dāng)前磁道號小于請求序列中最小者則直接由內(nèi)向外依次給予各請求服務(wù);
String?buffer?=?““;
for?(i?=?0;?i? buffer?+=?cidao[i]?+?“?“;
System.out.println(“當(dāng)前磁道:“?+?cidao[i]);
Thread.sleep(500);
}
log.addLog(“磁盤掃描序列為:?“?+?buffer.toString());
sum?=?cidao[len?-?1]?-?now;
count?=?len;
}
//若當(dāng)前磁道號大于當(dāng)前請求序列中最小者并且小于最大者
if?(now?>?cidao[0]?&&?now? StringBuffer?buffer?=?new?StringBuffer(““);
int?k?=?1;
//確定當(dāng)前磁道在已排的序列中的位置
while?(cidao[k]? k++;
}
int?lr;
l?=?k?-?1;
r?=?k;
//當(dāng)前磁道在請求序列范圍內(nèi)
while?((l?>=?0)?&&?(r? if?(now?-?cidao[l]?<=?(cidao[r]?-?now))?{//?選擇與當(dāng)前磁道最近的請求給予服務(wù)
buffer.append(cidao[l]?+?“?“);
System.out.println(“當(dāng)前磁道:“?+?cidao[l]);
Thread.sleep(500);
sum?+=?now?-?cidao[l];
now?=?cidao[l];
l?=?l?-?1;
}?else?{
buffer.append(cidao[r]?+?“?“);
System.out.println(“當(dāng)前磁道:“?+?cidao[r]);
Threa
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-12-29?23:34??移動臂調(diào)度算法\
?????文件?????????301??2017-12-29?23:34??移動臂調(diào)度算法\.classpath
?????文件?????????397??2017-12-29?23:34??移動臂調(diào)度算法\.project
?????目錄???????????0??2017-12-29?23:34??移動臂調(diào)度算法\.settings\
?????文件?????????598??2017-12-29?23:34??移動臂調(diào)度算法\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2017-12-29?23:35??移動臂調(diào)度算法\bin\
?????目錄???????????0??2017-12-29?23:35??移動臂調(diào)度算法\bin\edu\
?????目錄???????????0??2017-12-30?17:47??移動臂調(diào)度算法\bin\edu\swj\
?????文件????????7739??2018-01-02?10:53??移動臂調(diào)度算法\bin\edu\swj\Algorithm.class
?????文件????????5456??2017-12-30?23:39??移動臂調(diào)度算法\bin\edu\swj\ChoosePane.class
?????文件????????1754??2018-01-02?11:44??移動臂調(diào)度算法\bin\edu\swj\LogPane.class
?????文件????????5159??2017-12-30?20:16??移動臂調(diào)度算法\bin\edu\swj\Mainfr
?????目錄???????????0??2017-12-29?23:35??移動臂調(diào)度算法\src\
?????目錄???????????0??2017-12-29?23:35??移動臂調(diào)度算法\src\edu\
?????目錄???????????0??2017-12-30?17:47??移動臂調(diào)度算法\src\edu\swj\
?????文件???????11017??2018-01-02?10:53??移動臂調(diào)度算法\src\edu\swj\Algorithm.java
?????文件????????6726??2017-12-30?23:39??移動臂調(diào)度算法\src\edu\swj\ChoosePane.java
?????文件????????1163??2018-01-02?11:44??移動臂調(diào)度算法\src\edu\swj\LogPane.java
?????文件????????4108??2017-12-30?20:16??移動臂調(diào)度算法\src\edu\swj\Mainfr
評論
共有 條評論