内存管理、分配与回收模拟实验.pdf

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档