java实现的一个简单的动态分区内存分配算法的实现
本人只是一个学生,写这篇东西纯粹是做完课设留个记录,代码仅供参考,不一定正确。
By Aimer_majiko_sayuri 2019-1-2
实现动态分区内存分配的四个算法:
1.首次适应算法。
2.循环首次适应算法。
3.最佳适应算法。
4.最差适应算法。
关键代码:
//表结构
class DynamicTable{
int number;
int size;
int iniadd;
char state;
+各种set and get方法;
}
//首次适应
void allocRamFirst(int allocsize){
int index ,restsize,size,address,listsize;
listsize = dylist.size();
System.out.println("分配内存"+allocsize+"KB");
for(index = 0 ;index < listsize ;index++)
{
DynamicTable temp = (DynamicTable) dylist.get(index);
//寻找第一次适应的内存块
if(temp.getState() == 'n' && temp.getSize() >= allocsize)
{
address = temp.getIniadd();
size = temp.getSize();
restsize = size - allocsize ;
temp.setSize(allocsize);
temp.setState('y');
dylist.set(index,temp);
if(restsize >= recycle)
{
DynamicTable dyt = new DynamicTable(index ,restsize , address + allocsize , 'n');
dylist.add(index + 1 ,dyt);
}
else{
temp.setSize(allocsize + restsize);
dylist.set(index,temp);
}
break;//找到第一次的则直接退出分配内存程序
}
}
//System.out.println(index);
if(index =&