大多数CPU都存在MMU专门对内存管理。通过MMU来管理物理内存。在linux中用分页使用内存(因为只有i386有分段单元,其他cpu体系没有 。很容易理解如果不启用分页,线性地址直接做物理地址),用虚拟地址寻址。
三大地址:逻辑地址,线性地址(虚拟),物理地址
逻辑地址就是程序用的地址 。mmu中有2种单元电路:segmentation unit和 paging unit。通过第一种单元将逻辑地址转换成线性地址,再通过第二种单元将线性地址转换成物理地址。
逻辑地址由两部分组成:段标示符和偏移量。
线性地址被分成以固定长度为单位的组,称为页(page)
32为的线性地址分成3部分:Directory(目录 ,最高10位),table(页表,中间10位),offset(偏移量,最后12位)
线性地址0x20102654的地址转换
0010 0000 0001 0000 0010 0110 0101 0100
页目录索引 0010000000 =0x80 页表项索引 0100000010=0x102 偏移地址 011001010100=0x654
待续···