对于立志从事Linux内核开发的人来说,熟悉Linux内存管理非常重要。
X86系列微处理器有三种类型的地址,分别是物理地址,线性地址(虚拟地址),逻辑地址。
逻辑地址:是指在机器语言指令中,用于指定一个操作数或一条指令的地址,由段标识符和偏移量组成。
线性地址:又名虚拟地址,逻辑地址经过分段单元处理后就是线性地址。在32位CPU架构下,可以表示4G的地址空间,从0x00000000到0xffffffff。
物理地址:是指出现在CPU地址总线上用来访问物理内存单元的地址,是地址变换的最终结果。
CPU要想将一个逻辑地址转换位物理地址,需要两步:
第一步,CPU利用段式内存管理单元,将逻辑地址转换成线性地址。
第二步,CPU再利用页式内存管理单元,把线性地址转换为物理地址。
概括为:逻辑地址->线性地址->物理地址
参考资料:
1,国嵌视频——Linux内核编程5-内存管理子系统:
http://www.tudou.com/programs/view/9hXE56bw5LU/isRenhe=1
2,网友对逻辑地址、线性地址、物理地址和虚拟地址的理解