内存分配实验报告模板.docx

上传人:b****7 文档编号:10212059 上传时间:2023-02-09 格式:DOCX 页数:19 大小:604.69KB
下载 相关 举报
内存分配实验报告模板.docx_第1页
第1页 / 共19页
内存分配实验报告模板.docx_第2页
第2页 / 共19页
内存分配实验报告模板.docx_第3页
第3页 / 共19页
内存分配实验报告模板.docx_第4页
第4页 / 共19页
内存分配实验报告模板.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

内存分配实验报告模板.docx

《内存分配实验报告模板.docx》由会员分享,可在线阅读,更多相关《内存分配实验报告模板.docx(19页珍藏版)》请在冰豆网上搜索。

内存分配实验报告模板.docx

内存分配实验报告模板

河北建筑工程学院

实验报告

年月日

班级

物联142

姓名

孙胜杰

学号

20143260218

评分

实验台号

同组人员

实验名称

可变分区存储管理的内存分配算法模拟实现----首次适应算法

课程名称

操作系统

仪器名称

型号规格

仪器编号

装有eclipse和Java环境的PC机一台

一实验目的

1深刻理解可变分区的首次适应算法。

2掌握可变分区存储管理方式,使用可变分区的首次适应算法进行内存分配。

二实验设备

PC机

三实验内容

在Java开发环境下模拟可变分区的内存分配,使用首次适应算法,内存分配。

四程序的主要代码

package首次适应算法;

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.GridLayout;

importjava.awt.Label;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JOptionPane;

importjavax.swing.JPanel;

importjavax.swing.JTextArea;

importjavax.swing.JTextField;

importjavax.swing.SwingConstants;

importjavax.swing.GroupLayout;

importjavax.swing.GroupLayout.Alignment;

importjavax.swing.LayoutStyle.ComponentPlacement;

publicclassFFMethodextendsJFrame{

/**

*首次适应算法

*/

privatestaticfinallongserialVersionUID=1889348358576796305L;

protectedJTextFieldblank0,blank1,blank2,blank3,

blank4,blank5,blank6,blank7,

blank8,blank9,blank10,blank11,

blank12,blank13,blank14,blank15,

blank16,blank17,

blank18,blank19,blank20,blank21,blank22,blank23,

blank24,blank25,blank26,blank27,

blank28,blank29,blank30,blank31;//定义30个进程块

protectedJTextFieldapplyMemTF,releaseMemTF;//申请大小、释放块号的编辑框

protectedJTextAreashowMemStatusTF;//内存分配情况显示框

protectedJButtonapplyMemButton,releaseMemButton;//定义申请大小、释放块号和清空内存三个按钮

int[]processBlock=newint[32];//表示进程块

int[]processBlockStartAdd=newint[32];//表示存储起始地址

int[]processBlockLength=newint[32];//表示存储进程长度

publicFFMethod(){

setForeground(Color.BLACK);

setResizable(false);

getContentPane().setBackground(Color.CYAN);

setBackground(Color.WHITE);

setFont(newFont("黑体",Font.PLAIN,15));

setTitle("\u64CD\u4F5C\u7CFB\u7EDF\u2014\u2014\u9996\u6B21\u9002\u5E94\u7B97\u6CD5");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanelp5=newJPanel();

p5.setBackground(Color.YELLOW);

Fontfont1=newFont("SansSerif",Font.BOLD,16);

GroupLayoutgroupLayout=newGroupLayout(getContentPane());

groupLayout.setHorizontalGroup(

groupLayout.createParallelGroup(Alignment.LEADING)

.addGroup(groupLayout.createSequentialGroup()

.addContainerGap()

.addComponent(p5,GroupLayout.PREFERRED_SIZE,612,GroupLayout.PREFERRED_SIZE)

.addContainerGap(589,Short.MAX_VALUE))

);

groupLayout.setVerticalGroup(

groupLayout.createParallelGroup(Alignment.LEADING)

.addGroup(groupLayout.createSequentialGroup()

.addContainerGap()

.addComponent(p5,GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)

.addContainerGap(81,Short.MAX_VALUE))

);

JPanelp3=newJPanel(newGridLayout(11,1,20,0));

p3.setBackground(Color.YELLOW);

JLabellabel=newJLabel("\u5185\u5B58\u5BB9\u91CF32");

label.setHorizontalAlignment(SwingConstants.LEFT);

p3.add(label);

p3.add(blank0=newJTextField(3));

p3.add(blank1=newJTextField(3));

p3.add(blank2=newJTextField(3));

p3.add(blank3=newJTextField(3));

p3.add(blank4=newJTextField(3));

p3.add(blank5=newJTextField(3));

p3.add(blank6=newJTextField(3));

p3.add(blank7=newJTextField(3));

p3.add(blank8=newJTextField(3));

p3.add(blank9=newJTextField(3));

p3.add(blank10=newJTextField(3));

p3.add(blank11=newJTextField(3));

p3.add(blank12=newJTextField(3));

p3.add(blank13=newJTextField(3));

p3.add(blank14=newJTextField(3));

p3.add(blank15=newJTextField(3));

p3.add(blank16=newJTextField(3));

p3.add(blank17=newJTextField(3));

p3.add(blank18=newJTextField(3));

p3.add(blank19=newJTextField(3));

p3.add(blank20=newJTextField(3));

p3.add(blank21=newJTextField(3));

p3.add(blank22=newJTextField(3));

p3.add(blank23=newJTextField(3));

p3.add(blank24=newJTextField(3));

p3.add(blank25=newJTextField(3));

p3.add(blank26=newJTextField(3));

p3.add(blank27=newJTextField(3));

p3.add(blank28=newJTextField(3));

p3.add(blank29=newJTextField(3));

p3.add(blank30=newJTextField(3));

p3.add(blank31=newJTextField(3));

JPanelp1=newJPanel(newGridLayout(3,2,5,2));

p1.setBackground(Color.YELLOW);

p1.add(applyMemButton=newJButton("\u7533\u8BF7\uFF08\u5757\u6570\uFF09"));

applyMemButton.setBackground(Color.BLUE);

p1.add(applyMemTF=newJTextField(3));

applyMemTF.setToolTipText("");

p1.add(releaseMemButton=newJButton("\u91CA\u653E\uFF08\u5757\u53F7\uFF09"));

releaseMemButton.setBackground(Color.BLUE);

p1.add(releaseMemTF=newJTextField(3));

p1.add(newLabel("\t\u5185\u5B58\u5206\u914D\u60C5\u51B5\uFF1A"));

JPanelp2=newJPanel();

p2.setBackground(Color.YELLOW);

p2.add(showMemStatusTF=newJTextArea());

GroupLayoutgl_p2=newGroupLayout(p2);

gl_p2.setHorizontalGroup(

gl_p2.createParallelGroup(Alignment.LEADING)

.addGroup(gl_p2.createSequentialGroup()

.addComponent(p1,GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)

.addGap(28))

.addGroup(gl_p2.createSequentialGroup()

.addComponent(showMemStatusTF,GroupLayout.DEFAULT_SIZE,265,Short.MAX_VALUE)

.addContainerGap())

);

gl_p2.setVerticalGroup(

gl_p2.createParallelGroup(Alignment.LEADING)

.addGroup(gl_p2.createSequentialGroup()

.addComponent(p1,GroupLayout.PREFERRED_SIZE,131,GroupLayout.PREFERRED_SIZE)

.addPreferredGap(ComponentPlacement.RELATED)

.addComponent(showMemStatusTF,GroupLayout.DEFAULT_SIZE,175,Short.MAX_VALUE))

);

JButtonbutton=newJButton("\u6E05\u7A7A\u5185\u5B58");

button.setBackground(Color.RED);

button.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

for(intcc=0;cc<10;cc++)

processBlock[cc]=0;

colorr();

applyMemTF.setText("");

releaseMemTF.setText("");

showMemStatusTF.setText("");

}

});

p1.add(button);

p2.setLayout(gl_p2);

applyMemTF.setFont(font1);

releaseMemTF.setFont(font1);

showMemStatusTF.setFont(font1);

//申请空间的运算

applyMemButton.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

intn=Integer.parseInt(applyMemTF.getText());//进程块的大小

if(n>32||n<0){

JOptionPane.showMessageDialog(null,"进程大小违规,请重新输入!

");

}

outher:

//向内存中添加进程

for(inti=0;i<32;i++){//向内存中添加进程

if(processBlock[i]==0&&Sum(processBlock,i,n)==0){

processBlockStartAdd[i]=i;//存储起始地址

processBlockLength[i]=n;//存储进程长度

for(intss=i;ss<(i+n);ss++)

processBlock[ss]=1;//找到合适的位置,置1

colorr();

JOptionPane.showMessageDialog(null,"成功分配到内存!

");

showMemStatusTF.append("块号:

"+processBlockStartAdd[i]+"起始位置:

"+

processBlockStartAdd[i]+"大小:

"+processBlockLength[i]+"\n");

breakouther;

}

if(i==31){

JOptionPane.showMessageDialog(null,"内存不足,请等待...");

breakouther;

}

}

}

});

//释放内存按钮监听

releaseMemButton.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

intm=Integer.parseInt(releaseMemTF.getText());//进程块的起始位置和长度

for(intff=m;ff<(m+processBlockLength[m]);ff++){

processBlock[ff]=0;

}

processBlockStartAdd[m]=0;

processBlockLength[m]=0;

colorr();

showMemStatusTF.setText("");

for(intbb=0;bb<10;bb++){

if(processBlockLength[bb]!

=0)

showMemStatusTF.append("块号:

"+processBlock[bb]+"起始位置:

"+

processBlockStartAdd[bb]+"大小:

"+processBlockLength[bb]+"\n");

}

}

});

GroupLayoutgl_p5=newGroupLayout(p5);

gl_p5.setHorizontalGroup(

gl_p5.createParallelGroup(Alignment.LEADING)

.addGroup(gl_p5.createSequentialGroup()

.addGap(20)

.addComponent(p2,GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)

.addPreferredGap(ComponentPlacement.UNRELATED)

.addComponent(p3,GroupLayout.PREFERRED_SIZE,273,Short.MAX_VALUE)

.addGap(26))

);

gl_p5.setVerticalGroup(

gl_p5.createParallelGroup(Alignment.LEADING)

.addGroup(gl_p5.createSequentialGroup()

.addGroup(gl_p5.createParallelGroup(Alignment.LEADING,false)

.addComponent(p3,GroupLayout.DEFAULT_SIZE,GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)

.addGroup(gl_p5.createSequentialGroup()

.addGap(26)

.addComponent(p2,GroupLayout.PREFERRED_SIZE,GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)))

.addContainerGap(27,Short.MAX_VALUE))

);

p5.setLayout(gl_p5);

getContentPane().setLayout(groupLayout);

}

//判断内存空间是否足够

publicintSum(int[]pp,intmm,intk){

intsum=0;

if((mm+k)<=32){

for(intzz=mm;zz<(mm+k);zz++)

sum+=pp[zz];

}

else{

sum=1;

}

returnsum;

}

//内存与processBlock数组相对应,占用颜色为绿色,空白为蓝色

publicvoidcolorr(){

if(processBlock[0]==1)

blank0.setBackground(Color.GREEN);

else

blank0.setBackground(Color.WHITE);

if(processBlock[1]==1)

blank1.setBackground(Color.GREEN);

else

blank1.setBackground(Color.WHITE);

if(processBlock[2]==1)

blank2.setBackground(Color.GREEN);

else

blank2.setBackground(Color.WHITE);

if(processBlock[3]==1)

blank3.setBackground(Color.GREEN);

else

blank3.setBackground(Color.WHITE);

if(processBlock[4]==1)

blank4.setBackground(Color.GREEN);

else

blank4.setBackground(Color.WHITE);

if(processBlock[5]==1)

blank5.setBackground(Color.GREEN);

else

blank5.setBackground(Color.WHITE);

if(processBlock[6]==1)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1