- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态分区管理wll.pdf
算机操作系统实验报告 0915257 吴龙龙
动态分区存储管理实验
1. 实验目的
a) 熟悉主存的分配与回收。
b) 理解在不同的存储管理方式下,如何实现主存空间的分配与回收。
c) 掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方
式及其实现过程。
2. 实验原理
2.1 动态分区:
动态分区是指在系统运行的过程中建立分区,并使分区的大小刚好与作业的
大小相等。这种存储管理的方法解决了固定分区严重浪费内存的问题。是一
种较为实用的存储管理方法。
2.2 数据结构
主要由以下两部分:
1 )空闲分区表
2 )空闲分区链
其具体结构参见图4-1:
图4-1
2.3 动态分区算法
1)首次适应算法FF。
要求空闲区按首址递增的次序组织空闲区表 (队列)。
分配:当进程申请大小为SIZE 的内存时,系统从空闲区表的第一个表目
开始查询,直到首次找到等于或大于 SIZE 的空闲区。从该区中划出大小为
SIZE 的分区分配给进程,余下的部分仍作为一个空闲区留在空闲区表中,但
要修改其首址和大小。
回收:按释放区的首址,查询空闲区表,若有与释放区相邻的空闲区,
则合并到相邻的空闲区中,并修改该区的大小和首址,否则,把释放区作为
一个空闲区,将其大小和首址按照首地址大小递增的顺序插入到空闲区表的
适当位置。
1 / 8
算机操作系统实验报告 0915257 吴龙龙
2 )循环首次适应算法
该算法是由首次适应算法演变而成的。要求空闲区按首址递增的次序组
织空闲区表 (队列)。
分配:每次从上次找到的空闲分区的下一个空闲分区开时查找,直到找
到一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间。
为实现算法,应设置一个查寻指针。
3 )最佳适应算法。
要求 空闲区大小从小到大的次序组成空闲区表 (队列)。
分配:当进程申请一个存储区时,系统从表头开始查找,当找到第一个
满足要求的空闲区时,停止查找,并且这个空闲区是最佳的空闲区。
所谓最佳即选中的空闲区是满足要求的最小空闲区。
回收:按释放区的首址,查询空闲区表(队列),若有与释放区相邻的
空闲区,则合并到相邻的空闲区中,并修改该区的大小和首址,否则,把释
放区作为一个空闲区插入空闲区表 (队列)。
分配和回收后要对空闲区表 (队列)重新排序。
3. 实验分析
我们选择首次适应法 (FF )作为动态分区的实现算法。
为了方便实现和更加真实的模拟,我们这里直 用内存来模拟内存,即用一
个数组来模拟一段连续物理块,每个物理块的物理地址即为数组对应元素的
内存地址。
4. 数据结构
4.1 分区表节点结构
class data{
public:
int id;//分区标识
int* s_add;//起始地址
int* e_add;//结束地址
int size;//内存大小
data(){id=0;}//初始化
}data,*datap;
4.2 分区表链
我们这里直 用hash 表来实现,逻辑上抽象为链式。
5. 函数设计
5.1 用户选择菜单:
void menu ();
5.2 显示内存分配状态
int show (int a[],data part[]);
2 / 8
算机操作系统实验报告 0915257 吴龙龙
5.3 分配内存
int* allocation (int a[],data part[]);
文档评论(0)