Linux kernel内存反碎片技术

外部碎片

        还没有被分配出去(不属于任何进程)的内存,但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。外部碎片是除了任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。

内存碎片问题

        频繁地请求和释放不同大小的内存,必然导致内存碎片问题的产生,结果就是当再次要求分配连续的内存时,即使整体内存是足够的,也无法满足连续内存的需求。该问题也称之为外碎片(external fragmentation)。
解决方案:
避免外碎片的方法有两种:
1、地址转换技术,把非连续的物理地址转换成连续的线性地址。
2、记录现存的空闲内存,以尽量避免为满足对小块的请求而分割大的空闲块。
Linux采用了第二种方案,因为在某些情况下,系统的确需要连续的物理地址(DMA处理器可以直接访问总线)。

Linux内存管理

linux kernel 通过把整个物理内存划分成以一个个page进行管理,
第一层为全部物理内存:其管理器为伙伴系统,最小管理单位为page;
第二层为slab page:其管理器为slab/slub,最小管理单位为2的m次幂的字节块;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值