可变分区存储管理及可重定位分区存储管理实验报告.docx

上传人:b****9 文档编号:25467516 上传时间:2023-06-09 格式:DOCX 页数:17 大小:298.79KB
下载 相关 举报
可变分区存储管理及可重定位分区存储管理实验报告.docx_第1页
第1页 / 共17页
可变分区存储管理及可重定位分区存储管理实验报告.docx_第2页
第2页 / 共17页
可变分区存储管理及可重定位分区存储管理实验报告.docx_第3页
第3页 / 共17页
可变分区存储管理及可重定位分区存储管理实验报告.docx_第4页
第4页 / 共17页
可变分区存储管理及可重定位分区存储管理实验报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

可变分区存储管理及可重定位分区存储管理实验报告.docx

《可变分区存储管理及可重定位分区存储管理实验报告.docx》由会员分享,可在线阅读,更多相关《可变分区存储管理及可重定位分区存储管理实验报告.docx(17页珍藏版)》请在冰豆网上搜索。

可变分区存储管理及可重定位分区存储管理实验报告.docx

可变分区存储管理及可重定位分区存储管理实验报告

可变分区存储管理及可重定位分区存储管理实验报告

1、实验目的与要求

通过消化理解模拟管理程序,了解存储器的分配与回收过程,体会相关数据结构在实现管理算法中的重要性。

输入一到两组实验数据,观察分配与回收的处理结果,特别是回收时邻接空闲分区的合并处理,检测其算法的正确性。

2、算法思想

1、可变分区存储管理

(1)算法实现

a.分配:

查空闲分区链表

b.回收:

考虑邻接合并

(2)实验过程:

输入操作命令代码

a.分配:

输入作业号及作业长度(已建立作业不重复建立)

b.回收:

输入作业号(不存在作业不释放空间)

c.可查看空闲链表情况(检测分配、回收正确性)

d.可查看作业表情况(检测分配、回收正确性)

2、可重定位分区存储管理

在前述可变分区存储管理实验基础上修改实现,即遇大作业存在碎片不够分配时进行合并处理。

注:

实现拼接(移动,合并):

设立按作业地址排列的有序链表,即用静态链表实现(作业表增加静态链仿真指针),在此基础上按地址从小到大顺序依次向前移动(紧凑处理)。

3、算法实现(可重定位分区存储管理)

1、修改相关数据结构

(1)作业表增加链接仿真指针intnext;分量

(2)构造有序静态链表(初始化时next均赋值-1)

(3)增加静态链首指针Linkp及空闲总容量计数变量size(注:

初始化时Linkp=-1,size=n)

2、修改分配函数

判断新建立作业长度是否小于等于空闲总容量size值。

若无足够大分区,则先进行合并处理后再分配;

若有足够大分区,则按可变分区分配算法处理;

若作业长度超过总空闲容量,则产生溢出(无内存)。

3、增加插入排序操作函数(sort_tab())

分配新作业空间,则按新作业分区首地址大小,将作业表表项插入静态链表。

回收时,还必须从中删除。

4、增加拼接(移动)操作函数(compact())

主要是修改作业表表目内容及空闲分区链表,用模拟操作函数move()进行模拟搬家前移。

5、增加显示静态链表内容的较出操作函数(printsorttab())

四、算法流程

1、可变分区存储管理

(1)主程序(main()函数)

(2)分配程序(allocm()函数)

(3)回收程序(freem()函数)

(4)显示空闲分区链表及作业表程序(printlink()及printtab()函数)

注:

主程序(main()函数)

 

分配程序(allocm()函数)

 

回收程序(freem()函数)

有四种情形(假定回收区首地址=>addr,长度=>length)

(1)空闲分区链表空,或不与任何空闲区邻接=>分配新结点空间,存入回收作业首地址及长度插入空闲分区链(链首,链中,链尾)

(2)回收分区与后一空闲分区相邻接=>进行后邻接合并

(3)回首分区与前一空闲分区相邻接

(4)回收分区与前同时又与后空闲分区相邻接=>需进行三个分区合并,并删除一个空闲分区结点

注:

除了修改空闲分区链表,还要修改作业表(清除flag标志)

2、可重定位分区存储管理

(1)分配程序(修改allocm()函数)

(2)回收程序(修改freem()函数)

(3)有序静态链表插入操作程序(sort_tab()函数)

(4)拼接(移动)操作程序(compact()函数)

(5)输出有序静态链表操作程序(printsorttab()函数)

注:

分配程序(修改allocm()函数)

 

回收程序(修改freem()函数)

 

有序静态链表插入操作程序(sort_tab())拼接(移动)操作程序(compact())

 

 

5、实验步骤

1、可变分区存储管理

(1)消化实验算法程序

(2)组织上机实验数据

(3)第一组:

指定

(4)第二组:

自定(要求能测试各种情形)

(5)输入上机程序,编译,运行,记录各操作步骤的运行结果(通过显示空闲分区链表及作业表)

2、可重定位分区存储管理

(1)阅读相关算法程序

(2)组织调试数据(必须包含需合并的操作)

(3)上机运行、调试(测试),记录运行情况,分析运行结果

六、实验运行情况分析

1、可变分区存储管理

(1)操作程序1

a.分配作业1(80k),作业3(30k),作业8(50k),作业5(140k),作业9(50k),作业6(100k),作业4(50k)

b.观察(记录)空闲表及作业表情况

c.回收作业8,观察结果d.分配作业7(80k),观察结果

e.回收作业6,回收作业1,观察结果f分配作业10(120k),观察运行情况

g,回收作业7,作业3,作业5,观察各次结果

(2)操作程序2

a.分配作业1(100k)、作业2(50k)、作业3(50k)、作业4(80k)、作业5(120k),观察结果

b.回收作业4c.分配作业6(90k)

d.回收作业3f.分配作业7(140k)

2、可重定位分区存储管理

(1)操作程序1

a.分配作业1(80k),作业3(30k),作业8(50k),作业5(140k),作业9(50k),作业6(100k),作业4(50k)

b.观察(记录)空闲表及作业表情况

c.回收作业8,观察结果d.分配作业7(80k),观察结果

e.回收作业6,回收作业1,观察结果f分配作业10(120k),观察运行情况

g,回收作业7,作业3,作业5,观察各次结果

(2)操作程序2

a.分配作业1(100k)、作业2(50k)、作业3(50k)、作业4(80k)、作业5(120k),观察结果

b.回收作业4c.分配作业6(90k)

d.回收作业3f.分配作业7(140k)

七、实验总结

通过这次实验,我掌握了可变分区存储管理及可重定位分区存储管理的具体方法,对书本上的理论知识有了更深刻的认识。

通过对实验程序的运行和结果的观察,我充分掌握了内存分配与回收的四种情况。

经过自己编写的实验操作程序,使我更加深刻地了解存储器的分配与回收过程,增强了我的动手能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

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

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