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

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

ID:58381070

大小:665.56 KB

页数:42页

时间:2020-05-06

内存管理、分配与回收模拟实验.docx_第1页
内存管理、分配与回收模拟实验.docx_第2页
内存管理、分配与回收模拟实验.docx_第3页
内存管理、分配与回收模拟实验.docx_第4页
内存管理、分配与回收模拟实验.docx_第5页
资源描述:

《内存管理、分配与回收模拟实验.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、姓名学号实验成绩华中师范大学计算机科学系实验报告书实验题目:内存管理、分配与回收课程名称:操作系统主讲教师:辅导教师:课程编号:班级:实验时间:一、实验目的:(1)掌握内存分区管理的基本思想,理解内存分配表。(2)深入理解可变分区的内存分配策略,掌握首先适应算法、最佳适应算法和最坏适应算法。(3)掌握内存碎片产生的途径以及解决碎片的方法——拼接技术。(4)实现分区的回收。针对内存管理的相关活动,研究内存空闲队列的动态组织与管理问题,以及在此基础上执行的内存分配与回收活动。二、实验内容:本实验将利用伙伴系统来组织内存空闲块

2、队列和已使用内存块队列。从初始化快照、某一组作业申请内存块前的快照、分配成功后的快照等状态出发,结合内存分配原语(算法)和内存回收原语(算法)的实现,结合实际内存块的动态分配与回收情况(某一快照),研究内存空闲块队列的组织、变化及其队列管理方面的问题。具体内容如下:(1)实现内存分配算法和内存回收算法。(2)以伙伴系统的组织方式管理内存空闲队列和已使用内存块队列,具体的组织策略应分别考虑首次适应策略、最佳适应策略和最坏适应策略。(3)考虑在某一内存使用一段时间的快照,给出一组作业的内存申请,判断该申请是否可以被满足。三、

3、实验要求(1)分配算法中切割空闲区是从低地址开始;(2)需考虑门限值情况,门限值是指切割空闲区后剩下的区域若小于一个用户给定的值时,就不切割该空闲区,统统分给申请者,这个值由用户指定;(3)回收算法需要考虑上邻、下邻、上下邻和不相邻四种情况。四、实验环境:实践平台:windows编写环境:CodeBlocks编译器:g++五、实验设计原理(1)可变分区基本思想可变分区是指系统不预先划分固定分区,而是在装入程序时划分,使程序分配的大小正好等于程序的需求量,且分区的个数是可变的,这样有较大的灵活性,较之固定分区能获得更好的内

4、存利用率。其状态如图所示:(2)内存分配表内存分配表由两张表格组成:一张是已分配表,记录已装入的程序在内存中占用分区的起始地址和长度,并表之位指出占用分区的程序名;另一张是空闲区表,记录内存中可供分配的空闲区的起始地址和长度,用标志位指出该分区是未分配的空闲区。其基本结构如图所示:(3)分配策略①首次适应算法(FirstFit):从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使

5、用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。②最佳适应算法(BestFit):从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。③最差适应算法(WorstFit):从全部空闲区中找出能满足作业要求的、且大小最大的空闲分区,从而使链表中的结点大小趋于均匀,适用于请求分配的内存大小范围较窄的系统。为适应此

6、算法,空闲分区表(空闲区链)中的空闲分区按大小从大到小进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留小的空闲区,尽量减少小的碎片产生。(4)碎片拼接采用可变分区存储管理方案后,经过一段时间的分配回收,内存中会存在很多很小的空闲块。需要在适当时刻进行碎片整理,通过内存中移动程序,把所有空闲碎片合并成一个连续的大空闲区且放在内存的一端,而把所有程序占用区放在内存另一端。(5)分区的回收当用户执行结束后,系统要收回已经使用完毕的分区,将其记录在空闲区表中。一般情况下应考虑四种情况:1.回收分区的上邻分区是空

7、闲的,需要将这两个相邻的空闲分区合并成一个更大的空闲区,然后修改空闲区表。2.回收分区的下邻分区是空闲的,需要将这两个相邻的空闲分区合并成一个更大的空闲区,然后修改空闲区表。3.回收分区上下邻区都是空闲的,需要将三者合并成一个更大的空闲区,然后修改空闲表。4.回收区的上邻下邻区都不是空闲的,则直接将空闲区记录在空闲表中。五、实验详细实现过程与算法流程(一)数据结构1.作业结构本实验的重点是对内存的管理、分配与回收,所以作业的内部结构简单,仅包含:进程名(name)、程序大小(size)和内部指针(next),其结构如图:

8、2.分配表结构本实验的分配表结构包含:进程名兼区名(name)、地址(address)、程序大小(size)、状态(state)和内部指针(next),其结构如图:2.队列结构作业队列(joblist)、占用表队列(occupiedlist)和空闲表队列(blanklist)。其结构如图所示:(二)程序结构思维导图六

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

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

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