- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
姓名实验
学号成绩
华中师范大学计算机科学系
实验报告书
实验题目:内存管理、分配与回收
课程名称:操作系统
主讲教师:
辅导教师:
课程编号:
班级:
实验时间:
一、实验目的:
(1)掌握内存分区管理的基本思想,理解内存分配表。
(2)深入理解可变分区的内存分配策略,掌握首先适应算法、最佳适应算法和
最坏适应算法。
(3)掌握内存碎片产生的途径以及解决碎片的方法——拼接技术。
(4)实现分区的回收。
针对内存管理的相关活动,研究内存空闲队列的动态组织与管理问题,以及
在此基础上执行的内存分配与回收活动。
二、实验内容:
本实验将利用伙伴系统来组织内存空闲块队列和已使用内存块队列。从初始
化快照、某一组作业申请内存块前的快照、分配成功后的快照等状态出发,结合
内存分配原语(算法)和内存回收原语(算法)的实现,结合实际内存块的动态
分配与回收情况(某一快照),研究内存空闲块队列的组织、变化及其队列管理
方面的问题。具体内容如下:
(1)实现内存分配算法和内存回收算法。
(2)以伙伴系统的组织方式管理内存空闲队列和已使用内存块队列,具体的组
织策略应分别考虑首次适应策略、最佳适应策略和最坏适应策略。
(3)考虑在某一内存使用一段时间的快照,给出一组作业的内存申请,判断该
申请是否可以被满足。
三、实验要求
(1)分配算法中切割空闲区是从低地址开始;
(2)需考虑门限值情况,门限值是指切割空闲区后剩下的区域若小于一个用户
给定的值时,就不切割该空闲区,统统分给申请者,这个值由用户指定;
(3)回收算法需要考虑上邻、下邻、上下邻和不相邻四种情况。
四、实验环境:
实践平台:windows
编写环境:CodeBlocks
编译器:g++
五、实验设计原理
(1)可变分区基本思想
可变分区是指系统不预先划分固定分区,而是在装入程序时划分,使程序分
配的大小正好等于程序的需求量,且分区的个数是可变的,这样有较大的灵活性,
较之固定分区能获得更好的内存利用率。其状态如图所示:
(2)内存分配表
内存分配表由两张表格组成:一张是已分配表,记录已装入的程序在内存中
占用分区的起始地址和长度,并表之位指出占用分区的程序名;另一张是空闲区
表,记录内存中可供分配的空闲区的起始地址和长度,用标志位指出该分区是未
分配的空闲区。其基本结构如图所示:
(3)分配策略
①首次适应算法(FirstFit):从空闲分区表的第一个表目起查找该表,把
最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。为
适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排
序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地
址空间保留大的空闲区。
②最佳适应算法(BestFit):从全部空闲区中找出能满足作业要求的、且大
小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空
闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要
求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。
③最差适应算法(WorstFit):从全部空闲区中找出能满足作业要求的、且
大小最大的空闲分区,从而使链表中的结点大小趋于均匀,适用于请求分配的内
存大小范围较窄的系统。为适应此算法,空闲分区表(空闲区链)中的空闲分区
按大小从大到小进行排序,自表头开始查找到第一个满足要求的自由分区分配。
该算法保留小的空闲区,尽量减少小的碎片产生。
(4)碎片拼接
采用可变分区存储管理
文档评论(0)