前段时间操作系统实验,网上的都是c的,所以我觉得写个java的比较好,原创,不想搞成资源下载,请看:
这是第一个类:get,set方法设置属性
package Testdemo4;
public class Partation {
private int startAddress ;
private int endAddress ;
private int Id ;//根据下表获取元素
private int Size ;//集合长度
String name;
String state="未完成";
int bottom = 1;//bottom=1表示可以加载,而bottom=0表示不能再加载
public Partation(){}
public Partation(int Id,String name,int Size){
this.Id=Id;
this.Size=Size;
this.name = name;
this.state = "完成";
}
public int getStartAddress() {
return startAddress;
}
public void setStartAddress(int startAddress) {
this.startAddress = startAddress;
}
public int getEndAddress() {
return endAddress;
}
public void setEndAddress(int endAddress) {
this.endAddress = endAddress;
}
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
public int getSize() {
return Size;
}
public void setSize(int size) {
Size = size;
}
public String toString(){
return "分区" +this.getId()+""+"分区大小是:"+this.getSize();
}
}
第二个:实现各种算法,表示的是最佳,最坏,首次,等
package Testdemo4;
import java.util.ArrayList;
import Testdemo4.Partation;
public class ParTest {
public static int g = 15 ;//默认的
private static int index = 0 ;
/***********最佳适应算法**************/
public static void 最佳适应(ArrayList<Partation> list, int needSize) {
sortSmallToLarge(list);//每次分配最小的
setSize(list,needSize) ;
sortIDSmallToLarge(list);
}
/***********最坏适应算法**************/
public static void 最坏适应(ArrayList<Partation> list, int needSize) {
sortLargeToSmall(list);//每次分配最大的
setSize(list,needSize) ;
sortIDSmallToLarge(list);
}
/***********首次适应算法**************/
public static void 首次适应(ArrayList<Partation> list, int needSize) {
setSize(list,needSize) ;//找出一个能满足要求的空闲分区给所需要的请求
sortIDSmallToLarge(list);//地址由低到高
}
/***********循环首次适应算法**************/
public static void 循环首次(ArrayList<Partation> list, int needSize