内存管理基本概念之:碎片研究
Posted ouyangbuxiu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存管理基本概念之:碎片研究相关的知识,希望对你有一定的参考价值。
内存管理基本概念之:碎片研究
版权声明:本文章由vt.buxiu发布在www.vtzone.org,版权归vtzone研究小组所有,转载请保持此声明!!!
@内容摘要:碎片是内存管理必须面对的问题,在内存管理领域传统意义上的碎片分为两类,内部碎片(internal fragmentation)和外部碎片(external fragmentation)@:
内部碎片:
由于内存分配器采取某些管理策略,当分配一块大于请求尺寸的内存块时发生,多余的部分被浪费。比如有些内存管理程序分配固定尺寸的内存块,当你请求128Bytes的内存时,运行库有可能返回一块256Bytes的内存给你,多分配的那部分内存是无法被使用的(因为请求者并不知道你返回了256BYTEs内存给他),因为是否分配固定大小的内存是内存分配器的事情,通常对于使用者对此一无所知,从内存分配器角度而言,多分配的那部分内存就是内部碎片。
内部碎片.JPG (10.64 KB)
2007-11-29 22:49
外部碎片:
当多次分配/释放请求之后,由于内存分配器分配策略导致有很多的小的内存块(形成很多小的空洞Hole),存在很多不连续的可用空闲内存块,但不能满足应用程序的内存分配请求(通常情况下是Hole太多,虽然总和足够大,但却不能够相应大内存块请求)。比如,当内存分配器管理的内存块有5个128Bytes的内存块,但不连续,当面临256Bytes内存请求时却不能满足。
外部碎片.JPG (12.45 KB)
2007-11-29 22:49
为了避免内部碎片,很多分配器将多余部分作为小的块保留下来,以便将来请求需要或进行合并,以满足大块请求。
一些分配器碎片由于速度或简化限制分割的方式,另一些分配器为了避免外部碎片因为分割后可能将来不能合并成大块不能满足将来的请求。
碎片本质:
由上述所知,不管内部碎片还是外部碎片,碎片指不能被重用的内存。不能被重用的内存不仅和hole的数目与大小有关,也与程序将来的行为有关,和分配器的分配策略有关。
引起碎片的原因:
1.
不同时间释放导致(生命周期不同)
2.
程序请求内存的方式变化导致(大小变化,请求顺序)
相应的应对措施:
1.
预期内存块的释放时间
2.
分配时将在同一时间释放的内存块放在连续的内存空间,可以减少碎片。
预期程序请求的变化方式避免最坏情况的发生。
作者:vt.buxiu@vtzone.org
以上是关于内存管理基本概念之:碎片研究的主要内容,如果未能解决你的问题,请参考以下文章
(王道408考研操作系统)第三章内存管理-第一节8:非连续分配管理方式之段页式管理方式