1 虚拟地址
内存管理单元(Memory Management Unit)
操作系统会提供⼀种机制,将不同进程的虚拟地址和不同内存的物理地址映射起来。
2 内存分段、分页
通过内存分段和内存分页来管理虚拟地址和物理地址之间的关系。
虚拟地址是通过段表与物理地址进⾏映射的,分段机制会把程序的虚拟地址分成 4 个段,
每个段在段表中有⼀个项,在这⼀项找到段的基地址,再加上偏移量,于是就能找到物理内存中的地址。
分段的缺点
内存分页解决上述两个缺点
多级页表
4GB 空间的映射就需要有 4MB 的内存来存储⻚表,每个进程都有自己的页表,100个进程就有400M。
利用多级页表和局部性原理,时间换空间。
TLB(Translation Lookaside Buffer) = 页表缓存、转址旁路缓存、快表
段页式内存管理
内存分段、内存分页组合使用
段⻚式地址变换中要得到物理地址须经过三次内存访问:
3 Linux内存管理
- 程序所使⽤的地址,通常是没被段式内存管理映射的地址,称为逻辑地址;
- 通过段式内存管理映射的地址,称为线性地址,也叫虚拟地址;