packagememory;importjava.util.ArrayList;importjava.util.Collection;importjava.util.Scanner;public classMain {static ArrayList list = new ArrayList(); //建立一个链表,来表示内存的使用情况
static Scanner sc = newScanner(System.in);//首次适应算法
static voidfenPei(){
Date date= newDate();
System.out.println("输入请求分配进程的名称:");
date.name=sc.next();
System.out.println("输入分配的内存大小:");
date.length=sc.nextInt();inti;for ( i = 0; i < list.size(); i++) {if (date.length <= ((Date)list.get(i)).length && ((Date)list.get(i)).flag == 0) {//当有适合的内存,且未被使用
break;
}
}if (i ==list.size()) {
System.out.println("没有足够的内存进行分配");
}if (((Date)list.get(i)).length - date.length <= 4 && i != list.size() - 1 ) {//当内存比进程所占的内存在4kB以内的话,就不进行分片
((Date)list.get(i)).name =date.name;
((Date)list.get(i)).flag= 1;
}else{//分片分配内存
date.flag = 1;
((Date)list.get(i)).length-=date.length;
date.startAddress=((Date)list.get(i)).startAddress;
((Date)list.get(i)).startAddress+=date.length;
list.add(i, date);
}
}//最佳适应算法
static voidfenPei1(){
Date date= newDate();
System.out.println("输入请求分配进程的名称:");
date.name=sc.next();
System.out.println("输入分配的内存大小:");
date.length=sc.