天津理工大学操作系统存储器的分配与回收算法实现实验报告Word格式.docx
- 文档编号:13240410
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:25
- 大小:62.15KB
天津理工大学操作系统存储器的分配与回收算法实现实验报告Word格式.docx
《天津理工大学操作系统存储器的分配与回收算法实现实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《天津理工大学操作系统存储器的分配与回收算法实现实验报告Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
课程代码
0668036
实验时间
8节第7、122012年月13日节172012年12月日第3、47、8节2012年12月20日第
实验地点
软件实验室7-215
批改意见
成绩
教师签字:
实验内容:
1.模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。
2.采用最先适应法、最佳适应法、最坏适应法分配主存空间。
3.当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。
若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。
4.当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。
5.运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。
实验要求:
1.详细描述实验设计思想、程序结构及各模块设计思路;
2.详细描述程序所用数据结构及算法;
3.明确给出测试用例和实验结果;
4.为增加程序可读性,在程序中进行适当注释说明;
5.认真进行实验总结,包括:
设计中遇到的问题、解决方法与收获等;
6.实验报告撰写要求结构清晰、描述准确逻辑性强;
实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。
.7.
【实验过程记录(源程序、测试用例、测试结果及心得体会等)】
源程序:
MemoryBlock.java:
//内存块类,包含各种操作
publicclassMemoryBlock{
staticfinalintBLOCK_SIZE=4096;
privateintbaseBlock;
//内存块基地址
privateintblockNum;
//大小
privatebooleaninUse;
//是否已分配
privateMemoryBlockprev,next;
publicMemoryBlock(intblockNum){
this.baseBlock=0;
this.blockNum=blockNum;
inUse=false;
prev=null;
next=null;
}
publicMemoryBlock(intbase,intblockNum){
this.baseBlock=base;
publicintgetBlockNum(){
returnblockNum;
publicvoidsetBlockNum(intblockNum){
publicMemoryBlockgetPrev(){
returnprev;
publicvoidsetPrev(MemoryBlockprev){
this.prev=prev;
}
publicMemoryBlockgetNext(){
;
nextreturn}
setNext(MemoryBlocknext){publicvoid
=next;
next.this
inUse(){publicboolean
;
inUsereturn
setUse(){voidpublic
true=inUse
free(){voidpublic
false=inUse}
getBaseBlock(){publicint;
baseBlockreturn}
baseBlock){intpublicvoidsetBaseBlock(=baseBlock;
baseBlock.this}
分配内存块,如果可分配,则返回剩余内存块//blockNum){publicMemoryBlockallocate(int-blockNum>
0){blockNum(this.if
+blockNum;
newBase=baseBlockint-blockNum;
.thisintnewBlock=blockNum=blockNum;
blockNum.this
setUse();
MemoryBlock(newBase,newBlock);
newreturn}
-blockNum==0){elsethis(ifblockNum.=0;
blockNum.this}
nullreturn}
//判断内存块是否能合并
publicbooleanmerge(MemoryBlockmemBlock){
if(baseBlock+blockNum==memBlock.getBaseBlock()){
setBlockNum(blockNum+memBlock.blockNum);
memBlock.setBaseBlock(0);
memBlock.setBlockNum(0);
returntrue;
else;
falsereturn
@Override
StringtoString(){public;
StringinUse=null;
已分配(inUse())inUse=if;
未分配elseinUse=+
blockNum++基地址return内存块[尽+baseBlock,大小尽;
+inUse+?
尠嵜}
MemoryTable.java:
,提供内存链表的各种基本方法MemTable//虚类publicabstractclassMemoryTable{
//MemoryBlock链表表头
protectedMemoryBlockmemList;
blockNum){MemoryTable(intpublicMemoryBlock(0,blockNum);
memList=new}
//把newBlock前面插入到memBlock
insertBefore(MemoryBlockmemBlock,MemoryBlockpublicvoid
newBlock){
)(memBlock.getPrev()!
=ifnullmemBlock.getPrev().setNext(newBlock);
==memBlock)
if(memList=newBlock;
memList
newBlock.setPrev(memBlock.getPrev());
newBlock.setNext(memBlock);
memBlock.setPrev(newBlock);
//在memBlock后插入newBlock
publicvoidinsert(MemoryBlockmemBlock,MemoryBlocknewBlock){
if(memBlock.getNext()!
=null)
memBlock.getNext().setPrev(newBlock);
newBlock.setNext(memBlock.getNext());
memBlock.setNext(newBlock);
newBlock.setPrev(memBlock);
删除块的连接关系,但不释放块//
remove(MemoryBlockmemBlock){voidpublic
)(memBlock==memListif
=memBlock.getNext();
memList
)if(memBlock.getNext()!
=nullmemBlock.getNext().setPrev(memBlock.getPrev());
)if(memBlock.getPrev()!
=nullmemBlock.getPrev().setNext(memBlock.getNext());
print(){publicvoid
memListMemoryBlockmemBlock=
i=0;
int){(memBlock!
=nullwhile);
.print(i+out?
System..println(memBlock);
outSystem.i++;
memBlock=memBlock.getNext();
合并邻接的空闲内存//merge(MemoryBlocknewBlock){voidpublic
MemoryBlockmemBlock=memList){(memBlock!
=whilenull(!
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;
//分配内存(抽象函数)
publicabstractbooleanallocate(intblockNum);
//释放内存(抽象函数)
publicabstractbooleanfree(intbaseBlock);
FirstFit.java:
publicclassFirstFitextendsMemoryTable{
publicFirstFit(i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 天津 理工大学 操作系统 存储器 分配 回收 算法 实现 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)