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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

天津理工大学操作系统存储器的分配与回收算法实现实验报告Word格式.docx

1、课程代码 0668036 实验时间 8节 第7、122012 年月13日节17 2012 年12月日 第3、4 7、8节 2012 年12月20 日 第实验地点 软件实验室7-215 批改意见 成绩 教师签字:实验内容:1. 模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。2. 采用最先适应法、最佳适应法、最坏适应法分配主存空间。3. 当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。4. 当一个作业撤离时,归还的区域如果与其他空闲

2、区相邻,则应合并成一个较大的空闲区,登在空闲区表中。5. 运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。实验要求:1 详细描述实验设计思想、程序结构及各模块设计思路;2 详细描述程序所用数据结构及算法;3 明确给出测试用例和实验结果;4 为增加程序可读性,在程序中进行适当注释说明;5 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;6 实验报告撰写要求结构清晰、描述准确逻辑性强; 实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。 7【实验过程记录(源程序、测试用例、测试结果及心得体会等)】 源程序:MemoryBlock.java:/内存块类,包含各种操作

3、 public class MemoryBlock static final int BLOCK_SIZE = 4096; private int baseBlock; /内存块基地址 private int blockNum; /大小 private boolean inUse; /是否已分配 private MemoryBlock prev, next; public MemoryBlock(int blockNum) this.baseBlock = 0; this.blockNum = blockNum; inUse = false; prev = null; next = null;

4、 public MemoryBlock(int base, int blockNum) this.baseBlock = base; public int getBlockNum() return blockNum; public void setBlockNum(int blockNum) public MemoryBlock getPrev() return prev; public void setPrev(MemoryBlock prev) this.prev = prev; public MemoryBlock getNext() ;next return setNext(Memor

5、yBlock next) public void = next; next.this inUse() public boolean ; inUse return setUse() voidpublic true = inUse free() void public false = inUse getBaseBlock() public int; baseBlock return baseBlock) int public void setBaseBlock( = baseBlock; baseBlock .this 分配内存块,如果可分配,则返回剩余内存块 / blockNum) public

6、 MemoryBlock allocate(int - blockNum0) blockNum(this.if + blockNum; newBase = baseBlock int-blockNum; . this int newBlock = blockNum = blockNum; blockNum .this setUse(); MemoryBlock(newBase, newBlock); new return - blockNum =0) else this(if blockNum. = 0;blockNum . this null return /判断内存块是否能合并 publi

7、c boolean merge(MemoryBlock memBlock) if(baseBlock+blockNum =memBlock.getBaseBlock() setBlockNum(blockNum+memBlock.blockNum );memBlock.setBaseBlock(0);memBlock.setBlockNum(0);return true ; else;false return Override String toString() public; String inUse = null; 已分配 (inUse()inUse = if; 未分配else inUse

8、 = + blockNum + + 基地址 return内存块 尽 + baseBlock, 大小尽; + inUse + ?尠嵜 MemoryTable.java: ,提供内存链表的各种基本方法MemTable/虚类public abstract class MemoryTable /MemoryBlock链表表头 protected MemoryBlock memList; blockNum) MemoryTable( intpublic MemoryBlock(0, blockNum); memList = new /把newBlock前面插入到memBlock insertBefore

9、(MemoryBlock memBlock, MemoryBlock public void newBlock) ) (memBlock.getPrev() != ifnullmemBlock.getPrev().setNext(newBlock); = memBlock) if( memList = newBlock; memList newBlock.setPrev(memBlock.getPrev();newBlock.setNext(memBlock);memBlock.setPrev(newBlock); /在memBlock后插入newBlock public void inser

10、t(MemoryBlock memBlock, MemoryBlock newBlock) if(memBlock.getNext() != null) memBlock.getNext().setPrev(newBlock);newBlock.setNext(memBlock.getNext();memBlock.setNext(newBlock);newBlock.setPrev(memBlock); 删除块的连接关系,但不释放块/ remove(MemoryBlock memBlock) voidpublic ) (memBlock = memListif = memBlock.getN

11、ext();memList ) if(memBlock.getNext()!= nullmemBlock.getNext().setPrev(memBlock.getPrev();) if(memBlock.getPrev()!= nullmemBlock.getPrev().setNext(memBlock.getNext(); print() public void memList MemoryBlock memBlock = i=0; int) (memBlock != nullwhile); .print(i+ out?System.println(memBlock); out Sys

12、tem.i+;memBlock = memBlock.getNext(); 合并邻接的空闲内存/ merge(MemoryBlock newBlock) voidpublic MemoryBlock memBlock = memList) (memBlock != while null(!memBlock.inUse() if (memBlock.merge(newBlock) if memBlock.setBlockNum( memBlock.getBlockNum() + newBlock.getBlockNum(); remove(newBlock);break;if(newBlock.merge(memBlock) newBlock.setBlockNum( newBlock.getBlockNum() + memBlock.getBlockNum();remove(memBlock); break;/ 分配内存(抽象函数) public abstract boolean allocate(int blockNum);/释放内存(抽象函数) public abstract boolean free(int baseBlock);FirstFit.java:public class FirstFit extends MemoryTable public FirstFit(i

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

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