线性地址( Linear address ),也叫做逻辑地址 (virtual address) , 在 32 位系统中,它的寻址空间是从 0x00000000-0xffffffff ,也就是常说的 4G 。
PAE 分页机制
Physical address extension ,指的是在 32 位系统中,处理器的管脚数目从 32 个增加到 36 个,这样,寻址空间就扩大到了 64G ,完全可以满足现有的需求。
Paging Unit : 分页单元,它能够把线性地址转换成物理地址。在编程中,经常可以遇到 page fault 这样的错误,其实,这个错误就是从 paging unit 从抛出来的。
Page: 页,线性地址被分成固定长度为单位的组,这就是页。通常,页大小是 4K 。
此外,页既指一组线性地址,也指包含在这组地址中的数据。
Segmentation Unit : 分段单元,是一个硬件电路,可以把一个逻辑地址转换成线性地址。
Paging Unit :分页单元,是一个硬件电路,可以把线性地址转换成一个物理地址。属于 MMU ( memory management unit )的范畴。
Page Frame: 页框,分页单元( page unit )把系统中所有的 RAM 分成固定长度的页框。
Page 和 page frame 的区别:
Page 是一个数据块,而 page frame 是一个物理存储单元。因此,一个页可以任何页框中。
Page directory :页目录表,是一种转换表,用于线性地址到物理地址转换的第一步。
Page table :页表,是一种转换表,用于线性地址到物理地址转换的第二步。
32 位线性地址: page directory(10 bit), page table(10 bit), offset(12 bit)
Cr 寄存器
< ===================================================== >
Linux 系统中的分页机制:四级分页模型
- page global directory :页全局目录
- page upper directory : 页上级目录
- page middle directory :页中间目录
- page table : 页表
Linux进程页表
1. 0x00000000 ~ 0xbfffffff:进程处于用户态和内核态都可以寻址
2. 0xc0000000 ~ 0xffffffff:内核态的进程才能可以寻址