• 大小: 32KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Java
  • 标签: 操作系统  java  

资源简介

操作系统,用java实现磁盘调度算法,有swing界面,包括算法fcfs, sstf, scan,cscan。

资源截图

代码片段和文件信息

import java.util.ArrayList;

//磁盘调度算法
public class Algorithm {

static ArrayList finishedList = new ArrayList();// 算法调度后磁道信息装入该表
static double averDistance;// 平均移动距离

// FCFS
public static void fcfs(ArrayList unfinishedList int startNum) {//参数为请求队列,开始磁道号
int preNum = startNum;//上一磁道号
while (unfinishedList.isEmpty() == false) {//请求队列非空,进行调度算法
unfinishedList.get(0).distance = Math.abs(unfinishedList.get(0).num - preNum);//计算移动距离
preNum = unfinishedList.get(0).num;
finishedList.add(unfinishedList.get(0));
unfinishedList.remove(0);
}
double sum = 0;
for (int i = 0; i < finishedList.size(); i++) {
sum += finishedList.get(i).distance;
}
averDistance = sum / finishedList.size();
}

// SSTF
public static void sstf(ArrayList unfinishedList int startNum) {
Track min = unfinishedList.get(0);//最小距离的磁道
int preNum = startNum;
while (unfinishedList.isEmpty() == false) {
for (int i = 1; i < unfinishedList.size(); i++) {
if (Math.abs(min.num - preNum) > Math.abs(unfinishedList.get(i).num - preNum)) {
min = unfinishedList.get(i);
}
}
min.distance = Math.abs(min.num - preNum);
finishedList.add(min);
unfinishedList.remove(min);
preNum = min.num;
if (unfinishedList.isEmpty() == false) {
min = unfinishedList.get(0);
}
}
double sum = 0;
for (int i = 0; i < finishedList.size(); i++) {
sum += finishedList.get(i).distance;
}
averDistance = sum / finishedList.size();
}

// SCAN,开始时磁头移动方向为由里向外,再由外向里
public static void scan_1(ArrayList unfinishedList int startNum) {
ArrayList list_1 = new ArrayList();//将由里向外的磁道号装入该表
ArrayList list_2 = new ArrayList();//将由外向里的磁道号装入该表
for (int i = 0; i < unfinishedList.size(); i++) {
if (unfinishedList.get(i).num >= startNum) {
list_1.add(unfinishedList.get(i));

} else {
list_2.add(unfinishedList.get(i));
}
}
numSort_1(list_1);//小到大排序
numSort_2(list_2);//大到小排序
int preNum = startNum;
while (list_1.isEmpty() == false) {
list_1.get(0).distance = Math.abs(list_1.get(0).num - preNum);
preNum = list_1.get(0).num;
finishedList.add(list_1.get(0));
list_1.remove(list_1.get(0));
}
while (list_2.isEmpty() == false) {
list_2.get(0).distance = Math.abs(list_2.get(0).num - preNum);
preNum = list_2.get(0).num;
finishedList.add(list_2.get(0));
list_2.remove(list_2.get(0));
}
double sum = 0;
for (int i = 0; i < finishedList.size(); i++) {
sum += finishedList.get(i).distance;
}
averDistance = sum / finishedList.size();
}

// SCAN,开始时磁头移动方向为由外向里,再由里向外
public static void scan_2(ArrayList unfinishedList int startNum) {
ArrayList list_1 = new ArrayList();//将由外向里的磁道号装入该表
ArrayList list_2 = new ArrayList();//将由里向外的磁道号装入该表
for (int i = 0; i < unfinishedList.size(); i++) {
if (unfinishedList.get(i).n

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-12-27 22:14  Disk Scheduling\
     文件         299  2017-12-14 19:34  Disk Scheduling\.classpath
     文件         391  2017-12-14 19:34  Disk Scheduling\.project
     目录           0  2017-12-27 22:14  Disk Scheduling\.settings\
     文件         592  2017-12-14 19:34  Disk Scheduling\.settings\org.eclipse.jdt.core.prefs
     文件       11359  2017-12-15 19:32  Disk Scheduling\background.jpg
     目录           0  2017-12-27 22:14  Disk Scheduling\bin\
     文件        4912  2017-12-16 11:58  Disk Scheduling\bin\Algorithm.class
     文件        7931  2017-12-15 10:07  Disk Scheduling\bin\Algorithm.java.bak
     文件         982  2017-12-16 14:37  Disk Scheduling\bin\Design$1.class
     文件        1812  2017-12-16 14:37  Disk Scheduling\bin\Design$2.class
     文件         624  2017-12-16 14:37  Disk Scheduling\bin\Design$3.class
     文件        2751  2017-12-16 14:37  Disk Scheduling\bin\Design$4.class
     文件        5970  2017-12-16 14:37  Disk Scheduling\bin\Design.class
     文件         681  2017-12-16 11:23  Disk Scheduling\bin\Main$1.class
     文件         492  2017-12-16 11:23  Disk Scheduling\bin\Main.class
     文件         321  2017-12-16 11:58  Disk Scheduling\bin\Track.class
     目录           0  2017-12-27 22:14  Disk Scheduling\src\
     文件        7109  2017-12-16 11:58  Disk Scheduling\src\Algorithm.java
     文件       11359  2017-12-15 19:32  Disk Scheduling\src\background.jpg
     文件        8285  2017-12-16 14:37  Disk Scheduling\src\Design.java
     文件         325  2017-12-16 11:23  Disk Scheduling\src\Main.java

评论

共有 条评论