全面解析Linux 内核 3.10.x - 内存管理 - 伙伴系统算法(Buddy System)

本文深入探讨Linux内核3.10.x中的内存管理,重点讲解了内存碎片问题及其解决方案——伙伴系统算法。该算法将空闲页框分为11个链表,通过合并和分割操作解决内外碎片。介绍了算法的初始化、工作原理以及页框申请函数,强调了连续内存对DMA和TLB的影响。
摘要由CSDN通过智能技术生成

From: 全面解析Linux 内核 3.10.x - 内存管理

刨根问底是科学实践的基本要求 - XXX

上节我们简单的描述了地址管理的几个基本点,包含页框,也大小,页表等。这一节我们站在这些基本概念上,升入了解一下内存使用的一些问题以及Linux Kernel 针对此问题的解决方法.

1、内存碎片- 内碎片 && 外碎片

大家可能都听过内存碎片,但是对于为什么出现这种问题并没有去深入研究,我简单的描述一下:
内存碎片分为内部碎片以及外部碎片 - 内部碎片就是已经被分配出去的内存地址空间不能被”利用”的内存空间,而外部碎片瞧好相反,只没有被分配出的,主要是因为太小无法分配给被申请者。
想象一下:
假如有一个进程在频繁的请求和释放不同大小的一组连续页框,那么肯定就会导致在已经分配的块内分散许多小块空闲页框,那么假如你现在像要一块连续且很大的页框,虽热有空闲的页框,但是由于是碎片而导致不能满足你的申请要求。

本质上的解决方法有两种:
- 1.利用页单元把一组非连续的页框映射到连续的线性地址空间。
- 2.开发一种适当的技术来记录现存的空闲页框块的情况,尽量的避免为满足小块的请求而分割大的空闲块。

那么显然我们内核使用了第二种解决方法。
基于什么考虑使得内核选用了第二种解决方法呢?
a.首先&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值