- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可变分区存储管理及可重定位分区存储管理实验报告
一、实验目的与要求
通过消化和理解仿真管理程序,了解内存的分配和恢复过程,认识到相关数据结构在实现管理算法中的重要性。
输入一到两组实验数据,观察分配与回收的处理结果,特别是回收时邻接空闲分区的合并处理,检测其算法的正确性。二、算法思想
1.可变分区存储管理(1)算法实现
a.分配:查空闲分区链表b.回收:考虑邻接合并
(2) 实验过程:输入操作命令代码
a.分配:输入作业号及作业长度(已建立作业不重复建立)b.回收:输入作业号(不存在作业不释放空间)c.可查看空闲链表情况(检测分配、回收正确性)d.可查看作业表情况(检测分配、回收正确性)2、可重定位分区存储管理
根据上述可变分区存储管理实验修改实现,即在大作业中碎片分配不足的情况下
进行合并处理。
注:实现拼接(移动、合并):
设立按作业地址排列的有序链表,即用静态链表实现(作业表增加静态链仿真指针),在此基础上按地址从小到大顺序依次向前移动(紧凑处理)。
三、 算法实现(可重定位分区存储管理)1。修改相关数据结构
(1)作业表增加链接仿真指针intnext;分量
(2) 构造一个有序的静态链表(初始化期间将-1分配给下一个)(3)增加静态头指针linkp和总空闲容量计数变量大小(注意:初始化期间linkp=-1,
size=n)
2.修改分配功能
判断新建立作业长度是否小于等于空闲总容量size值。若无足够大分区,则先进行合并处理后再分配;若有足够大分区,则按可变分区分配算法处理;若作业长度超过总空闲容量,则产生溢出(无内存)。3、增加插入排序操作函数(sort_tab())
分配新作业空间时,根据新作业分区的第一个地址的大小,将作业表项插入到静态链表中。回来
收时,还必须从中删除。
主要是修改操作表和自由分区链表的内容,并使用模拟操作函数move()进行模拟
搬家前移。
5.添加比较操作函数(printorttab())以显示静态链表的内容。四、 算法流程
1、可变分区存储管理
(1) 主程序(Main()函数)
(2)分配程序(allocm()函数)(3)回收程序(freem()函数)
(4) 用于显示自由分区链表和作业列表的程序(printlink()和printtab()函数)
注:主程序(main()函数)
分配器(allocm()函数)
回收程序(freem()函数)
有四种情况(假设回收区的第一个地址=addr,length=length)
(1)空闲分区链表空,或不与任何空闲区邻接=分配新结点空间,存入回收作业
将第一个地址和长度插入自由分区链(链头、链中间、链尾)
(2)回收分区与后一空闲分区相邻接=进行后邻接合并(3)回首分区与前一空闲分区相邻接
(4) 回收的分区与前者相邻,后者同时=需要合并三个分区,删除一个空闲分区节点
注:除了修改空闲分区链表,还要修改作业表(清除flag标志)
2.可重定位分区存储管理
(1)分配程序(修改allocm()函数)(2)回收程序(修改freem()函数)
(5) 输出有序静态链表操作程序(printortab()函数)注意:分配程序(modify allocm()函数)
n,l
提示操作员输入新作业的作业编号和长度
y作业n输出作业已建立提示串,返回已建立?
nnl≤大小?内存容量不足,返回
y
分配操作表的项目,填写操作长度,将标志设置为1,并从总空闲容量中减去L
结点)作业表表=l目插入有序静态y分区大小修改空闲分区链表(size=l,空闲链为链表空(一起分配),sizel,分割分配)作n返回业表表目插入有序静态链表分区大小ln查下一分区
Y切割并分配分区空间,修改分区链表操作表条目,插入有序静态链表
返回
回收程序(修改freem()函数)
五、实验步骤
1.可变分区存储管理
(1)消化实验算法程序(2)组织上机实验数据(3)第一组:指定
(4) 第2组:自定义(需要能够测试各种情况)
(5)输入上机程序,编译,运行,记录各操作步骤的运行结果(通过显示空闲分区链表及作业表)
2.可重定位分区存储管理(1)读取相关算法程序
(2)组织调试数据(必须包含需合并的操作)(3)上机运行、调试(测试),记录运行情况,分析运行结果六、实验运
文档评论(0)