版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统实验报告 计算机学院 (院、系) 网络工程 专业 082 班 组 课学号 20 姓名 区德智 实验日期 教师评定 实验四 内存管理一、实验目的通过实验使学生了解可变式分区管理使用的主要数据结构,分配、回收的主要技术,了解最优分配、最坏分配、最先分配等分配算法。基本能达到下列具体的目标:1、 掌握初步进程在内存中的映像所需要的内存需求。2、 内存的最先分配算法首先实现,再逐步完成最优和最坏的分配算法。二、实验内容1、 在进程管理的基础上实现内存分配。2、 运用java实现整体的布局与分配内存时的动态图画显示。三、实验步骤 1.构建一个Process的对象类,每分配一次内存就实例化一个对象
2、。这对象包含分配内存的名字,内存大小(byte),绘画的起点像素,绘画的终点像素。主要代码:public class Process private String name;private int size;private int beginPx;private int endPx;public int getBeginPx() return beginPx;public void setBeginPx(int beginPx) this.beginPx = beginPx;public int getEndPx() return endPx;public void setEndPx(int
3、endPx) this.endPx = endPx;public String getName() return name;public void setName(String name) = name;public int getSize() return size;public void setSize(int size) this.size = size;2.根据用户输入而分配内存的大小,若输入的大小大于目前可分配内存的大小则拒绝分配操作,否则增加一个新进程入链表中,并在已分配表中增加进程的名字,更新剩余内存大小。分配内存流程图:绘画paint()方法的主要代码:pu
4、blic void paint(Graphics g) super.paint(g);/刷新页面 Color c=g.getColor(); g.setColor(Color.WHITE); g.fillRect(20, 400, 450, 50);/若已有分配内存 if(myList.size()!=0) g.setColor(Color.BLACK); /从已分配的内存中循环获取像素起点位置和像素的大小 for(int i=0;imyList.size();i+) g.fillRect(myList.get(i).getBeginPx(), 400,myList.get(i).getEnd
5、Px()-myList.get(i).getBeginPx(), 50); g.setColor(c); 显示已分配进程名字的showListName()方法主要代码:public void showListName(ArrayList myList) Process newProcess=null; showList.removeAll(); for(int i=0;i(m*1024*1024+k*1024+b)JOptionPane.showMessageDialog(null,所剩内存不足,警告对话框,JOptionPane.WARNING_MESSAGE);elseString nam
6、e=JOptionPane.showInputDialog(null,输入进程名字,输入对话框,JOptionPane.PLAIN_MESSAGE);/获得分配内存名字Process newProcess=new Process();newProcess.setName(name);newProcess.setSize(Integer.parseInt(mbField.getText()*1024*1024+Integer.parseInt(kbField.getText()*1024+Integer.parseInt(byteField.getText(); size=newProcess.
7、getSize(); fsize=size;/把size转成float类型计算,小数计算必须要化成整形 px=(int)(450/p*fsize);/获得像素的长度newProcess.setBeginPx(index);newProcess.setEndPx(index+px);index=index+px;myList.add(newProcess);/把进程添加到链表中/绘图repaint(); showListName(myList);/显示所用进程的名字 /三个输入框清空 mbField.setText();kbField.setText(); byteField.setText()
8、; /更改剩余内存值 int leftSize=(m*1024*1024+k*1024+b)-size; m=leftSize/(1024*1024); k=leftSize/1024%1024; b=leftSize%1024; notice2.setText(可分配最大内存:+m+MB +k+KB +b+Byte); 输入要分配的内存大小:图1 分配内存输入名字:图2 输入名字分配两个内存:图3 分配两个内存3.用户选择已分配的内存名字而回收相应的内存模块: 回收流程图:回收内存主要代码:public class CollectMemoryListener implements Actio
9、nListenerpublic void actionPerformed(ActionEvent arg0) int num=showList.getSelectedIndex();/获得被选中的序号/更新剩余内存值 int releaseSize=myList.get(num).getSize(); m=m+releaseSize/(1024*1024); k=k+releaseSize/1024%1024; b=b+releaseSize%1024; notice2.setText(可分配最大内存:+m+MB +k+KB +b+Byte); /从链表中删去该进程myList.remove(
10、num);showListName(myList);repaint();回收第一个内存后,绘图更新,剩余内存更新:图4 回收第一个已分配的内存重新整合内存主要代码:public class RefreshMemoryListener implements ActionListenerpublic void actionPerformed(ActionEvent e) if(myList.size()!=0)index=20;for(int i=0;imyList.size();i+) size=myList.get(i).getSize(); fsize=size;/把size转成float类型计算 px=(int)(450/p*fsize);/获得像素的长度myList.get(i).setBeginPx(index);myList.get(i).setEndPx(index+px);index=index+px;repaint();图5 重新整合内存四、实验总结通过本次实验
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 危险货物运输作业员跨境物流规则考核试卷及答案
- 消费者心理学试题及答案
- 乡镇信访工作不力的检讨书合集
- 心理健康知识竞答试题及答案
- 养护工程教育培训考核试卷及答案
- 药企物料员考试题及答案
- 油品储运调合操作工中级题库及答案
- 执法证市场监管专业测试卷及答案
- 羽毛球二年级裁判员考题及答案
- 中国移动传输线路L考试试题及参考答案
- 2026国网天津市电力公司高校毕业生提前批招聘(约450人)笔试备考题库浓缩500题及答案详解一套
- 电影与幸福感(北京师范大学)学习通测试及答案
- 雅马哈电钢琴P-115B中文说明书
- 中药饮片鉴别知识培训课件
- 2025-2030动力电池快充技术安全边界探索
- 充电桩运维安全培训课件
- 专利知识培训班课件
- 《健康养老职业素养与安全》养老服务与管理专业全套教学课件
- 航海模型培训课件
- 医院培训课件:《恶性黑色素瘤》
- 冀教版四年级上册除法竖式计算题200道及答案
评论
0/150
提交评论