收藏 分销(赏)

可变分区首次适应算法(Java版).doc

上传人:丰**** 文档编号:4312226 上传时间:2024-09-05 格式:DOC 页数:4 大小:18.03KB 下载积分:5 金币
下载 相关 举报
可变分区首次适应算法(Java版).doc_第1页
第1页 / 共4页
可变分区首次适应算法(Java版).doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
运行平台:MyEclipse 使用方法:新建一个Distribution1类,粘贴代码即可 package mypackage; import javax.swing.JOptionPane; public class Distribution1 { int size=0; public int j;//用于记录内存分块数 int[] part=new int[1000];//用于记录内存分块的大小 int[] address=new int[1000];//用于记录内存分块的起始地址 int[] flag=new int[1000];//用于记录内存分块的分配情况 String Suggestion; Distribution1(){ for(int i=0;i<1000;i++) { part[i]=0; address[i]=0; flag[i]=0; } }// end Distribution1() void Input(){ Suggestion=JOptionPane.showInputDialog("请输入可分配内存的大小:"); size=Integer.parseInt(Suggestion); }//end Input() void Output(){ Suggestion="| "+"分区号"+" | "+"分区大小"+" | "+"起始地址"+" | "+"状态"+" |"; for(int k=0;k<=j;k++) { Suggestion+="\n| "+k+" | "; Suggestion+=part[k]+" | "; Suggestion+=address[k]+" | "; Suggestion+=flag[k]+" |"; } JOptionPane.showMessageDialog(null, Suggestion,"内存分配情况",JOptionPane.INFORMATION_MESSAGE); }//end Output() void Begin(){ char s='y'; int i=0; int count=0; Suggestion=JOptionPane.showInputDialog("请输入内存的起始地址:"); address[i]=Integer.parseInt(Suggestion);//记录首地址 Suggestion=JOptionPane.showInputDialog("请输入第0块分区的大小:"); part[i]=Integer.parseInt(Suggestion);//记录第0块分区的大小 count=part[i]; flag[i]=1; i++; j++; Suggestion=JOptionPane.showInputDialog("是否继续分块,是请输入'y'或'Y',否请输入任意字符:"); s=Suggestion.charAt(0); while(s=='y'||s=='Y') { Suggestion=JOptionPane.showInputDialog("请输入第"+i+"块分区的大小"); part[i]=Integer.parseInt(Suggestion); if(size-count<part[i]){ JOptionPane.showMessageDialog(null, "剩余空间不足以分配!"); } else { address[i]=address[i-1]+part[i-1]; flag[i]=1; count=count+part[i]; i++; j++; } Suggestion=JOptionPane.showInputDialog("是否继续,是请输入'y'或'Y',否则请输入任意的字符:"); s=Suggestion.charAt(0); }//while(s=='y'||s=='Y') part[i]=size-count; address[i]=address[i-1]+part[i-1]; flag[i]=0; }//end Begin() void Restore(){//可作改进,在Suggestion中输入所有要回收的内存块,再将其解析出来。 char s; int i; int k=0; int count=0; int tag=0; int number[]={'0','1','2','3','4','5','6','7','8','9'}; Suggestion=JOptionPane.showInputDialog("是否要回收内存,是请输入'y'或'Y',否请输入任意的字符:"); s=Suggestion.charAt(0); if(s=='y'||s=='Y'){ Suggestion=JOptionPane.showInputDialog("请输入要回收的内存块号,中间以空格相间并以空格结尾:"); for(i=0;i<Suggestion.length();i++) { if(Suggestion.charAt(i)!=' ')// { for(k=0;k<10;k++) { if(Suggestion.charAt(i)==number[k]) { tag=k+tag*10;//提取字符串中的整数 }//if }//for }//if else{ if(tag>j){ JOptionPane.showMessageDialog(null,"输入的内存号不存在,请重新输入!","Warning",JOptionPane.INFORMATION_MESSAGE); continue; } else{ flag[tag]=0; tag=0; } } }//for }//if for(i=1;i<=j;i++)//合并连续的空闲空间 { if(flag[i-1]==0&&flag[i]==0) { part[i-1]=part[i-1]+part[i]; count++; for(k=i;k<=j;k++) { part[k]=part[k+1]; address[k]=address[k+1]; }//for }//if }//for for(i=1;i<=j;i++)//移动flag数组的元素 { if(flag[i-1]==0&&flag[i]==0) { for(k=i;k<=j;k++) { flag[k]=flag[k+1]; }//for }//if }//for j=j-count; }//end Restore() public static void main(String arg[]){ JOptionPane.showMessageDialog(null, "\t\t\t\t\t可变分区首次适应算法","Title",JOptionPane.INFORMATION_MESSAGE); Distribution1 distribute=new Distribution1(); distribute.Input(); distribute.Begin(); distribute.Output(); distribute.Restore(); distribute.Output(); System.exit(0); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服