好文档 - 专业文书写作范文服务资料分享网站

实验五 动态分区分配方式内存管理模拟 

天下 分享 时间: 加入收藏 我要投稿 点赞

实验五 动态分区分配方式内存管理模拟

一、 实验目的

1) 掌握连续分配方式内存管理理论 2) 掌握动态分区分配方式内存管理理论

二、 实验原理

动态分区分配:根据进程的实际需要,动态地创建分区为之分配内存空间,在实现动态分区分配时,将涉及分区分配中所使用的数据结构,分区分配算法和分区的分配与回收操作等问题。 1) 分区分配中的数据结构

? 空闲分区表:一个数据表,用于记录每个空闲块的情况,如起始地址、大小、使用情况等;

? 空闲分区链表:把所有的空闲分区链接成一个链表,便于内存空间查看与分配回收。 2) 分配算法

? 首次适应法:空闲分区按首地址递增次序组织,每次查找时从链首出发,寻找满足要求的内存块。

? 循环首次适应算法:空闲分区按首地址递增次序组织,每次从上次查找的下一个空闲块开始查找,直到找到满足要求的内存块。

? 最佳适应法:空闲分区按空闲分区大小址递增次序组织,每次查找时从链首出发,寻找满足要求的最小内存块进行分配。

? 最坏适应法:空闲分区按空闲分区大小递减次序组织,每次查找时直接判断最大空闲分区是否满足要求。 3) 内存分配过程

利用分配算法找到满足要求的内存块,设请求的内存大小为size: ? 若找到的空闲分区的大小等于size,完全分配;

? 若找到的空闲分区大小大于size,且一分为二后,剩余大小小于1K,则不再分割,作为整体进行分配;否则一分为二,剩余部分仍然作为空闲分区存在;

? 若无满足要求空闲分区,则分配失败 4) 内存回收

根据释放区首址和大小,查找空闲分区表/链表,判断是否有相邻的空闲分区存在:

? 释放区与前空闲区相邻:将释放区与前空闲区合并为一个空闲区。其首址仍为前空闲区首址,大小为释放区大小与空闲区大小之和。

? 释放区与前后两个空闲区相邻:将这三个区合为一个空闲区,其首址为前空闲区首址,大小为这三个区大小之和,并取消原后空闲区表目。 ? 释放区与后空闲区相邻:则把释放区合并到后空闲,首地址为释放区首地址,大小为二者大小之和。

? 释放区不与任何空闲区相邻:将释放区作为一个空闲区,将其大小和首址插入到空闲区表的适当位置。

三、 实验内容

要求编写一个动态分区分配管理程序实现一块模拟内存空间的管理,包括内存分配与回收功能。具体要求完成功能: 1) 模拟实现64M内存空间的管理 2) 设计内存分配结构,记录内存使用情况

3) 设计内存分配算法(首次适应法、最佳适应法、最坏适应法或循环首次适应法,任选一个)

4) 设计内存回收算法(考虑相邻空间的合并) 5) 可动态显示内存分区状况

四、 实验要求

1) 实验数据可以设计要求:至少完成10次以上内存分配、5次以上内存回收(其中分配与回收需要混合进行,且回收过程中至少涉及2次以上内存合并处理)

2) 实验工具不限 3) 实验学时4学时 4) 实验报告包含:

? ? ? ? ?

实验目的、实验要求 实验数据

相关数据结构设计说明 算法思路流程

算法各数据运行结果截图

实验五 动态分区分配方式内存管理模拟 

实验五动态分区分配方式内存管理模拟一、实验目的1)掌握连续分配方式内存管理理论2)掌握动态分区分配方式内存管理理论二、实验原理动态分区分配:根据进程的实际需要,动态地创建分区为之分配内存空间,在实现动态分区分配时,将涉及分区分配中所使用的数据结构,分区分配算法和分区的分配与回收操作等问题。1)分区分配中的数据结构
推荐度:
点击下载文档文档为doc格式
0bz6b5avy23fmdy9vdev
领取福利

微信扫码领取福利

微信扫码分享