Linux内核内存管理总结

这篇博客详细总结了《奔跑吧Linux内核》第一版中的内存管理部分,包括内存管理的参考资料、框架图、分配与回收机制、VMA、页面映射、slab分配器、内存优化和检测工具,以及代码和测试环境的搭建。作者Arnold Lu提供了丰富的学习资源和实践指南,帮助读者理解Linux内核内存管理的复杂性。
摘要由CSDN通过智能技术生成

微信公众号:奔跑吧linux社区

加奔跑吧微信群请先加微信:runninglinuxkernel
欢迎订阅奔跑吧配套旗舰篇视频节目:https://weidian.com/?userid=1352872851


这篇对《奔跑吧Linux内核》第一版的内存管理 做了很棒的笔记和总结。《奔跑吧Linux内核》第一版各大书店有售。
这篇文章作者是:Arnold Lu@南京
原文:https://www.cnblogs.com/arnoldlu/p/8051674.html?from=groupmessage

Linux的内存管理涉及到的内容非常庞杂,而且与内核的方方面面耦合在一起,想要理解透彻非常困难。
在开始学习之前进行了一些准备工作《如何展开Linux Memory Management学习?》,

1. 参考资料

遂决定以如下资料作为参考,进行Linux内存管理的研究:

《奔跑吧 Linux内核》:以第2章为蓝本展开,这是目前能获取的紧跟当前内核发展(Linux 4.0),并且讲的比较全面的一本资料。

《Understanding the Linux Virtual Memory Manager》:简单说就是虽老但经典,基于(Linux 2.4/2.6)。作者是目前仍然活跃在Linux社区MM专家。

《wowotech Memory Management》:没有其他系列经典,也没有条理系列的介绍MM,但是仍然值得按考。

《tolimit Linux内存源码分析》:相对零散的介绍了内存相关分析文档

《Linux Kernel v4.0》:当然必不可少的,是源码了。

当逐渐深入看到MMU相关代码时,读一下ARM架构关于MMU的规格书有助于理解。

不然对于虚拟地址到物理地址的映射就会很虚无,这些资料包括《ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition》的《Virtual Memory System Architecture》,以及相关MMU TRM。

2. Linux Memory Management框架图

整个内存管理从宏观上可以分为三大部分:用户空间、内核空间和相关硬件。

用户空间主要是libc对相关系统调用进行封装,对用户程序提供API,常用的有malloc、mmap、munmap、remap、madvise、mempolicy等等。

相关硬件包括MMU/TLB、L1/L2 Cache以及DDR RAM,具体到ARM架构需要对照MMU/L2 Cache以及RAM规格书。

内核空间就复杂多了,首先介绍初始化及初始化后的布局。

2.1 物理内存初始化从获取内存大小、初始化页表,再进行zone初始化,然后在zone中使用伙伴系统进行物理内存初始化;

2.2 页表的映射过程讲述了ARM32和ARM64两种架构下的页表映射,如何从虚拟地址由MMU转化成物理页面地址的;

2.3 内核内存的布局图在内存被初始化之后,内核的内存布局基本上就确定了,ARM32和ARM64下布局有很大区别。在malloc一节brk中介绍了用户空间的布局。
2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值