内存分配与回收

内存分配与回收

ID:37935275

大小:365.22 KB

页数:10页

时间:2019-06-03

内存分配与回收_第1页
内存分配与回收_第2页
内存分配与回收_第3页
内存分配与回收_第4页
内存分配与回收_第5页
资源描述:

《内存分配与回收》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、实验目的1.深入了解动态分区存储管理方式内存分配与回收的实现。二、实验要求熟悉存储管理中动态分区的管理方式及Windows环境下,VC++程序设计方法。三、实验内容:编写程序完成动态分区存储管理方式的内存分配与回收。具体内容包括:1、确定内存空闲分区表和进程内存分配表2、采用首次适应算法完成内存空间的分配3、采用最佳适应算法完成内存空间的分配4、实现内存回收功能,包括单独回收;与上边空闲区邻接,合并回收;与下边空闲区邻接,合并回收;与上、下边空闲区邻接,合并回收。四、实验原理:1、动态分区存储管理动态分区管理方式预先不将内存划分成几个区域,而把内存空间看作一个大的空闲区。

2、当进程要求装入内存时,根据进程需要内存空间的大小查询内存各个空闲区,按首次或最佳适应算法,选择一个合适的空闲区,并按进程需求量划出一个分区装入该进程。进程执行完成后,它所占用的内存分区被收回,成为一个空闲区。如果该空闲区的相邻分区也是空闲区,则需要将相邻空闲区合并成一个空闲区。实现动态分区存储管理,主要需要解决以下问题:1.记录空闲区和内存分配区的数据结构2.动态内存分配算法3.动态内存回收算法2、空闲分区表空闲分区表主要记录内存现存的分区首址、大小等信息,定义如下:struct{intAddress;//空闲分区首址intLength;//空闲分区长度1}FreeAreaL

3、ist[MAXAREANO];3、进程内存分配表内存分配表记录每个进程占用内存的情况,包括进程占用内存的首址、大小等信息,定义如下:struct{intFlag;//进程是否已撤消intAddress;//进程占用内存首址intLength;//进程占用内存大小}ProcessList[MAXPROCESSNO];4、动态内存分配算法本实验主要采用两种动态内存分配算法:首次适应算法和最佳适应算法。首次适应算法是将找到的第一个满足要求的空闲分区分配给进程,实现如下:for(i=0;i=A

4、llocatRamSize)break;}//i是找到的空闲区号最佳适应算法是将大小最接近进程大小的空闲分区分配给进程,实现如下:faID=FreeAreaMaxNo;bfSize=MAXRAMSIZE;for(i=0;i=AllocatRamSize){if(bfSize>=FreeAreaList[i].Length-AllocatRamSize){faID=i;bfSize=FreeAreaList[i].Length-AllocatRamSize;}}}i=faID;//i是找

5、到的空闲区号5、动态内存回收算法进程(进程号为ProcessID)执行完成后,会被撤消,它所占用的内存分区被收回,成为一个空闲区。如果该空闲区的相邻分区也是空闲区,则需要将相邻空闲区合并成一个空闲区。1.与上边空闲区邻接2与上空闲区邻接,直接将被撤消进程的内存合并到上空闲区中,只需要修改上空闲区的长度,实现如下:FreeAreaList[i].Length+=ProcessList[ProcessID].Length;2.与下边空闲区邻接与下空闲区邻接,直接将被撤消进程的内存合并到上空闲区中,将下空闲区首址修改为被撤消进程的内存首址,下空闲区的长度修改为两个分区长度的和,实现

6、如下:FreeAreaList[i].Address=ProcessList[ProcessID].Address;FreeAreaList[i].Length+=ProcessList[ProcessID].Length;3.与上、下边空闲区皆邻接将上空闲分区、被撤消进程的内存和下空闲分区合并为一个新空闲分区,其首址为上空闲分区的首址,其长度为三个分区长度之和,且空闲分区项减1,实现如下:FreeAreaList[i].Length+=ProcessList[ProcessID].Length;FreeAreaList[i].Length+=FreeAreaList[i+1

7、].Length;FreeAreaMaxNo--;4.独立空闲区与上、下空闲分区皆不邻接,直接生成一个空闲表项,将被撤消进程的内存首址,作为空闲区的首址;内在长度作为空闲区的长度,实现如下:FreeAreaList[i].Address=ProcessList[ProcessID].Address;FreeAreaList[i].Length=ProcessList[ProcessID].Length;FreeAreaMaxNo++;五、实验现象:1.分配内存A.动态分配内存如下图所示,动态分配了六次。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。