linux内核学习--内存管理theory篇

说明:以kernel-2.6.24为对象

1 硬件知识

关键词:RAM 内存条 CPU寄存器 MMU
RAM:Random-access memory

MMU:Memory Manage Unit(地址转换)

CPU寄存器:稍后再表。

2 逻辑地址/虚拟地址/线性地址/物理地址

关键词:段寄存器 内存条
MMU的作用:逻辑地址转换为强调内容物理地址

各地址的区别

逻辑地址:selector:offset
虚拟地址:offset
线性地址:逻辑地址的selector通过段式存储转换为基址,offset不变(linux-kernel中基址为0,故,线性地址=虚拟地址)
物理地址:线性地址通过分页机制转换为物理地址

3 逻辑地址到线性地址的转换

关键词:MMU 分段 段寄存器 GDT LDT

4 线性地址到物理地址的转换

关键词:MMU 分页 PGD PUD PMD PTE

5 逻辑地址到物理地址的映射

关键词:内核空间 用户空间 高端内存

6 内碎片和外碎片

关键词:碎片 内存

{Internal fragmentationExternal fragmentation

内碎片:由于内核 本身的原因,如最小页4K,若进程需要3K,则分其一页4K,但有1K的碎片。
外碎片:由于 外部因素的原因,如进程的页框被回收,产生碎片,如下图,

7 buddy算法

关键词:buddy 外碎片
Buddy memory allocation用于解决外碎片问题

具体wikipedia解释非常清楚

8 slab分配器

关键词:slab 内碎片

slab 分配器用于解决内碎片问题

9 kernel内存管理

关键词:动态内存 连续内存 非连续内存
动态内存:RAM的某些部分被永久地分配给了内核,并用来存放内核代码以及静态内核数据结构,剩下的部分被称为动态内存.
内核给自己分配动态内存:

{ buddy- slab-{vmalloc vfree 


参考:维基百科 知乎 百度 《Linux 内核源代码情景分析》《深入理解LINUX内核》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值