内存分配实验报告模板_第1页
内存分配实验报告模板_第2页
内存分配实验报告模板_第3页
内存分配实验报告模板_第4页
内存分配实验报告模板_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河 北 建 筑 工 程 学 院实 验 报 告 年 月 日班级物联142姓名孙胜杰学号20143260218评分实验台号同组人员实验名称可变分区存储管理的内存分配算法模拟实现-首次适应算法课程名称操作系统仪 器 名 称型号规格仪器编号装有eclipse和Java环境的PC机一台一 实验目的1 深刻理解可变分区的首次适应算法。2 掌握可变分区存储管理方式,使用可变分区的首次适应算法进行内存分配。二 实验设备PC机三 实验内容 在Java开发环境下模拟可变分区的内存分配,使用首次适应算法,内存分配。四 程序的主要代码package 首次适应算法;import java.awt.Color;impor

2、t java.awt.Font;import java.awt.GridLayout;import java.awt.Label;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextArea

3、;import javax.swing.JTextField;import javax.swing.SwingConstants;import javax.swing.GroupLayout;import javax.swing.GroupLayout.Alignment;import javax.swing.LayoutStyle.ComponentPlacement;public class FFMethod extends JFrame /* * 首次适应算法 */private static final long serialVersionUID = 18893483585767963

4、05L;protected JTextField blank0,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个进程块protected JTextFiel

5、d applyMemTF,releaseMemTF; /申请大小、释放块号的编辑框protected JTextArea showMemStatusTF; /内存分配情况显示框protected JButton applyMemButton,releaseMemButton; /定义申请大小、释放块号和清空内存三个按钮int processBlock = new int32; /表示进程块int processBlockStartAdd = new int32; /表示存储起始地址int processBlockLength = new int32; /表示存储进程长度public FFMet

6、hod() setForeground(Color.BLACK);setResizable(false);getContentPane().setBackground(Color.CYAN);setBackground(Color.WHITE);setFont(new Font("黑体", Font.PLAIN, 15);setTitle("u64CDu4F5Cu7CFBu7EDFu2014u2014u9996u6B21u9002u5E94u7B97u6CD5");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE

7、);JPanel p5 = new JPanel();p5.setBackground(Color.YELLOW);Font font1 = new Font("SansSerif",Font.BOLD,16);GroupLayout groupLayout = new GroupLayout(getContentPane();groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.LEADING).addGroup(groupLayout.createSequentialGroup(

8、).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, Grou

9、pLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addContainerGap(81, Short.MAX_VALUE);JPanel p3 = new JPanel(new GridLayout(11,1,20,0);p3.setBackground(Color.YELLOW);JLabel label = new JLabel("u5185u5B58u5BB9u91CF32");label.setHorizontalAlignment(SwingConstants

10、.LEFT);p3.add(label);p3.add(blank0 = new JTextField(3);p3.add(blank1 = new JTextField(3);p3.add(blank2 = new JTextField(3);p3.add(blank3 = new JTextField(3);p3.add(blank4 = new JTextField(3);p3.add(blank5 = new JTextField(3);p3.add(blank6 = new JTextField(3);p3.add(blank7 = new JTextField(3);p3.add(

11、blank8 = new JTextField(3);p3.add(blank9 = new JTextField(3);p3.add(blank10 = new JTextField(3);p3.add(blank11 = new JTextField(3);p3.add(blank12 = new JTextField(3);p3.add(blank13 = new JTextField(3);p3.add(blank14 = new JTextField(3);p3.add(blank15 = new JTextField(3);p3.add(blank16 = new JTextFie

12、ld(3);p3.add(blank17 = new JTextField(3);p3.add(blank18 = new JTextField(3);p3.add(blank19 = new JTextField(3);p3.add(blank20 = new JTextField(3);p3.add(blank21 = new JTextField(3);p3.add(blank22 = new JTextField(3);p3.add(blank23 = new JTextField(3);p3.add(blank24 = new JTextField(3);p3.add(blank25

13、 = new JTextField(3);p3.add(blank26 = new JTextField(3);p3.add(blank27 = new JTextField(3);p3.add(blank28 = new JTextField(3);p3.add(blank29 = new JTextField(3);p3.add(blank30 = new JTextField(3);p3.add(blank31 = new JTextField(3);JPanel p1 = new JPanel(new GridLayout(3,2,5,2);p1.setBackground(Color

14、.YELLOW);p1.add(applyMemButton = new JButton("u7533u8BF7uFF08u5757u6570uFF09");applyMemButton.setBackground(Color.BLUE);p1.add(applyMemTF = new JTextField(3);applyMemTF.setToolTipText("");p1.add(releaseMemButton = new JButton("u91CAu653EuFF08u5757u53F7uFF09");releaseMem

15、Button.setBackground(Color.BLUE);p1.add(releaseMemTF = new JTextField(3);p1.add(new Label("tu5185u5B58u5206u914Du60C5u51B5uFF1A"); JPanel p2 = new JPanel();p2.setBackground(Color.YELLOW);p2.add(showMemStatusTF = new JTextArea();GroupLayout gl_p2 = new GroupLayout(p2);gl_p2.setHorizontalGro

16、up(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, Sho

17、rt.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, GroupLayo

18、ut.DEFAULT_SIZE, 175, Short.MAX_VALUE);JButton button = new JButton("u6E05u7A7Au5185u5B58");button.setBackground(Color.RED);button.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) for(int cc = 0;cc < 10;cc+)processBlockcc = 0;colorr();applyMemTF.setText(

19、"");releaseMemTF.setText("");showMemStatusTF.setText(""););p1.add(button);p2.setLayout(gl_p2);applyMemTF.setFont(font1);releaseMemTF.setFont(font1);showMemStatusTF.setFont(font1);/申请空间的运算applyMemButton.addActionListener(new ActionListener() public void actionPerformed(A

20、ctionEvent e) int n = Integer.parseInt(applyMemTF.getText();/进程块的大小if(n > 32 | n <0)JOptionPane.showMessageDialog(null,"进程大小违规,请重新输入!");outher:/向内存中添加进程 for(int i = 0;i < 32; i+ ) /向内存中添加进程if(processBlocki = 0 && Sum(processBlock,i,n) = 0)processBlockStartAddi = i; /存储起始地址

21、processBlockLengthi = n; /存储进程长度for(int ss = i;ss < (i + n);ss+)processBlockss = 1; /找到合适的位置,置1colorr();JOptionPane.showMessageDialog(null,"成功分配到内存!");showMemStatusTF.append("块号:" + processBlockStartAddi + " 起始位置:" +processBlockStartAddi + " 大小: " + process

22、BlockLengthi +"n");break outher;if(i = 31)JOptionPane.showMessageDialog(null,"内存不足,请等待.");break outher;);/释放内存按钮监听 releaseMemButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int m = Integer.parseInt(releaseMemTF.getText();/进程块的起始位置和长度for(in

23、t ff = m;ff < (m + processBlockLengthm);ff+)processBlockff = 0;processBlockStartAddm = 0;processBlockLengthm = 0;colorr();showMemStatusTF.setText("");for(int bb = 0;bb < 10; bb+)if(processBlockLengthbb != 0)showMemStatusTF.append("块号:" + processBlockbb + " 起始位置:"

24、+ processBlockStartAddbb + " 大小:"+ processBlockLengthbb + "n"););GroupLayout gl_p5 = new GroupLayout(p5);gl_p5.setHorizontalGroup(gl_p5.createParallelGroup(Alignment.LEADING).addGroup(gl_p5.createSequentialGroup().addGap(20).addComponent(p2, GroupLayout.PREFERRED_SIZE, GroupLayou

25、t.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.createPara

26、llelGroup(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

27、_VALUE);p5.setLayout(gl_p5);getContentPane().setLayout(groupLayout);/判断内存空间是否足够public int Sum(int pp,int mm,int k)int sum = 0;if(mm + k) <= 32)for(int zz = mm;zz < (mm + k);zz+)sum+=ppzz;else sum = 1;return sum;/内存与processBlock数组相对应,占用颜色为绿色,空白为蓝色 public void colorr()if(processBlock0=1)blank0.s

28、etBackground(Color.GREEN);else blank0.setBackground(Color.WHITE);if(processBlock1=1)blank1.setBackground(Color.GREEN);else blank1.setBackground(Color.WHITE);if(processBlock2=1)blank2.setBackground(Color.GREEN);else blank2.setBackground(Color.WHITE);if(processBlock3=1)blank3.setBackground(Color.GREEN

29、);else blank3.setBackground(Color.WHITE);if(processBlock4=1)blank4.setBackground(Color.GREEN);else blank4.setBackground(Color.WHITE);if(processBlock5=1)blank5.setBackground(Color.GREEN);else blank5.setBackground(Color.WHITE);if(processBlock6=1)blank6.setBackground(Color.GREEN);else blank6.setBackgro

30、und(Color.WHITE);if(processBlock7=1)blank7.setBackground(Color.GREEN);else blank7.setBackground(Color.WHITE);if(processBlock8=1)blank8.setBackground(Color.GREEN);else blank8.setBackground(Color.WHITE);if(processBlock9=1)blank9.setBackground(Color.GREEN);else blank9.setBackground(Color.WHITE);if(proc

31、essBlock10=1)blank10.setBackground(Color.GREEN);else blank10.setBackground(Color.WHITE);if(processBlock11=1)blank11.setBackground(Color.GREEN);else blank11.setBackground(Color.WHITE);if(processBlock12=1)blank12.setBackground(Color.GREEN);else blank12.setBackground(Color.WHITE);if(processBlock13=1)bl

32、ank13.setBackground(Color.GREEN);else blank13.setBackground(Color.WHITE);if(processBlock14=1)blank14.setBackground(Color.GREEN);else blank14.setBackground(Color.WHITE);if(processBlock15=1)blank15.setBackground(Color.GREEN);else blank15.setBackground(Color.WHITE);if(processBlock16=1)blank16.setBackgr

33、ound(Color.GREEN);else blank16.setBackground(Color.WHITE);if(processBlock17=1)blank17.setBackground(Color.GREEN);else blank17.setBackground(Color.WHITE);if(processBlock18=1)blank18.setBackground(Color.GREEN);else blank18.setBackground(Color.WHITE);if(processBlock19=1)blank19.setBackground(Color.GREE

34、N);else blank19.setBackground(Color.WHITE);if(processBlock20=1)blank20.setBackground(Color.GREEN);else blank20.setBackground(Color.WHITE);if(processBlock21=1)blank21.setBackground(Color.GREEN);else blank21.setBackground(Color.WHITE);if(processBlock22=1)blank22.setBackground(Color.GREEN);else blank22.setBackground(Color.WHITE);if(processBlock23=1)blank23.setBackground(Color.GREEN);else blank23.setBackground(Color.WHITE);if(processBlock24=1)blank24.setBackground(Color.GREEN);else blank24.setBackground(Color.WHITE);if(processBlock25

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论