ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:202.12KB ,
资源ID:12277848      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12277848.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统实验 内存管理.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统实验 内存管理.docx

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

3、 void setEndPx(int endPx) this.endPx = endPx; public String getName() return name; public void setName(String name) this.name = name; public int getSize() return size; public void setSize(int size) this.size = size; 2.根据用户输入而分配内存的大小,若输入的大小大于目前可分配内存的大小则拒绝分配操作,否则增加一个新进程入链表中,并在已分配表中增加进程的名字,更新剩余内存大小。分配内

4、存流程图:绘画paint()方法的主要代码:public 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(),

5、 400,myList.get(i).getEndPx()-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.WARN

6、ING_MESSAGE); else String name=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(byteF

7、ield.getText(); size=newProcess.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();

8、 kbField.setText(); byteField.setText(); /更改剩余内存值 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

9、 CollectMemoryListener implements ActionListener public 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

10、 +k+KB +b+Byte); /从链表中删去该进程 myList.remove(num); showListName(myList); repaint(); 回收第一个内存后,绘图更新,剩余内存更新:图4 回收第一个已分配的内存重新整合内存主要代码:public class RefreshMemoryListener implements ActionListener public void actionPerformed(ActionEvent e) if(myList.size()!=0) index=20; for(int i=0;imyList.size();i+) size=my

11、List.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 重新整合内存四、实验总结通过本次实验,加深了对内存管理的理解。并掌握了单链表应用的重要方法。运用java的GUI为客户端整体布局,并且运用paint()方法来表示内存分配的状态。一个已分配的内存表示一个对象,所有对象都存放在链表中,当回收内存时则把改对象在链表中移除。每次绘图都是根据链表中存在的对象而绘画。由于对象中存放有起点的像素和终点的像素,因而实现起来简单。

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

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