可变分区存储管理及可重定位分区存储管理实验报告
更新时间:2024-02-28 23:34:01 阅读量: 综合文库 文档下载
可变分区存储管理及可重定位分区存储管理实验报告
一、实验目的与要求
通过消化理解模拟管理程序,了解存储器的分配与回收过程,体会相关数据结构在实现管理算法中的重要性。
输入一到两组实验数据,观察分配与回收的处理结果,特别是回收时邻接空闲分区的合并处理,检测其算法的正确性。 二、算法思想
1、可变分区存储管理 (1)算法实现
a.分配:查空闲分区链表 b.回收:考虑邻接合并
(2)实验过程:输入操作命令代码
a.分配:输入作业号及作业长度(已建立作业不重复建立) b.回收:输入作业号(不存在作业不释放空间) c .可查看空闲链表情况(检测分配、回收正确性) d.可查看作业表情况(检测分配、回收正确性) 2、可重定位分区存储管理
在前述可变分区存储管理实验基础上修改实现,即遇大作业存在碎片不够分配时
进行合并处理。
注:实现拼接(移动,合并):
设立按作业地址排列的有序链表,即用静态链表实现(作业表增加静态链仿真指针),在此基础上按地址从小到大顺序依次向前移动(紧凑处理)。
三、算法实现(可重定位分区存储管理) 1、修改相关数据结构
(1)作业表增加链接仿真指针 int next;分量
(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()函数)
n,l
提示操作者输入新建作业的作业号及长度
Y 作业n 输出作业已建立提示串,返回 已建立?
N N l≤size? 内存容量不够,返回
Y
分配作业表表项,填入作业长度,置标志为1,总空闲容量减去l
查空闲分区链表 Y 查到表调用拼接操作函数compact() 尾? 进行拼接处理 分区整体分配,修 改分区链(删除N 置新作业作业表作业地址(分配空间)
结点)作业表表=l 目插入有序静态Y 分区大小修改空闲分区链表(size= l,空闲链为 链表 空(一起分配),size> l ,分割分配)作 N 返回 业表表目插入有序静态链表 分区大小> l N 查下一分区
Y 切割分配分区空间,修改分区链表 作业表表目插入有序静态链表
返回
回收程序(修改freem()函数)
有序静态链表插入操作程序(sort_tab()) 拼接(移动)操作程序(compact())
五、实验步骤
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.回收作业4 c.分配作业6(90k)
d.回收作业3 f.分配作业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, 观察结果 g,回收作业7,作业3,作业5,观察各次结果
f分配作业10(120k),观察运行情况
(2)操作程序2
a.分配作业1(100k)、作业2(50k)、作业3(50k)、作业4(80k)、作业5(120k),观察结果
b.回收作业4 c.分配作业6(90k)
d.回收作业3 f.分配作业7(140k)
七、实验总结 通过这次实验,我掌握了可变分区存储管理及可重定位分区存储管理的具体方法,对书本上的理论知识有了更深刻的认识。通过对实验程序的运行和结果的观察,我充分掌握了内存分配与回收的四种情况。经过自己编写的实验操作程序,使我更加深刻地了解存储器的分配与回收过程,增强了我的动手能力。
正在阅读:
北京市丰台区初三(九年级)语文2014-2015学年度第一学期期末练习01-21
动力学-习题解611-25
巴厘岛旅游购物攻略08-29
从江椪柑绿色食品柑桔果品生产技术规程03-09
初级会计实务(2016)第一章 资产06-19
大体积砼质量控制02-02
南派玄空二十四山歌诀10-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 分区
- 存储
- 管理
- 可变
- 定位
- 实验
- 报告
- 及可