firego
linux内存管理梳理
原创
关注作者
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
firego
社区首页
>
专栏
>
linux内存管理梳理
linux内存管理梳理
firego
关注
修改于 2025-12-21 15:31:17
修改于 2025-12-21 15:31:17
263
0
举报
概述
linux内存管理之内存寻址总结记录
文章被收录于专栏:
linux内核
linux内核
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
内存管理
linux-kernel
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
内存管理
linux-kernel
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
目录
1. 内存寻址
1.1 内存寻址的核心地址类型
1.1.1 虚拟地址
1.1.2. 物理地址
1.1.3. 总线地址
1.2. 内存寻址的硬件基础
1.2.1. MMU(内存管理单元)
1.2.2.TLB(地址转换缓存)
1.3. 内存分页
1.3.1. 页(Page)与页框(Page Frame)
1.3.2. 页表(Page Table)
1.3.3. 页内偏移(Offset)
1.3.4. 多级页表原因
1.3.4.1. 单级页表的内存浪费困境(以 32 位系统为例)
1.3.4.2. 多级页表的优化逻辑:“按需分配页表项”
1.3.4.3. 64 位系统的 “救命稻草”:多级页表是唯一可行方案
4. 地址转换的核心流程:从虚拟地址到物理地址
4.1. 虚拟地址拆分(48 位)
4.2. 页表结构与转换步骤
4.3. 32 位系统的简化转换(以 x86 为例)
5. Linux 内核的特殊寻址机制
5.1. 内核地址空间的线性映射(DIRECT MAP)
5.2. 高端内存寻址(HIGHMEM)
5.3. 巨页寻址(HugePage)
5.4. DMA 寻址
6. 寻址异常与处理
6.1. 页错误(Page Fault)
6.2. TLB 缺失(TLB Miss)
2. 物理内存管理
2.1. 核心前提
2.2. 分层管理架构
2.2.1. 伙伴系统(Buddy)
1)工作原理
2)适用场景
2.2.2. slab 分配器
1)工作原理
2)衍生版本
3)适用场景
2.2.3. vmalloc 分配器
2.3. 关键辅助机制
2.3.1. 内存映射
2.3.2. 内存回收
2.3.3. 交换分区
2.3.4. 内存压缩
2.4. 特殊场景优化
3. 虚拟内存管理
3.1. 虚拟内存空间划分
3.2. 内核线性空间布局
3.3. 用户线性空间布局
4.内存申请与回收
4.1. brk与mmap
4.1.1. 性能取舍:brk 极致高效,mmap 灵活但开销高
4.1.2. 地址特征取舍:brk 连续,mmap 离散
4.1.3. 回收策略取舍:brk 惰性回收,mmap 即时回收
4.1.4. 功能取舍:brk 极简,mmap 全能
4.2. glibc缓存(malloc)
缓存结构:
申请与释放流程
4.3. 内存碎片
4.3.1. 内部碎片(Internal Fragmentation)
核心定义
产生原因
关键特征
4.3.2. 外部碎片(External Fragmentation)
核心定义
产生原因
关键特征
4.3.3. 碎片增长趋势
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐