概念
1.逻辑地址
包含在机器语言指令中用来指定一个操作数或一条指令的地址。每个逻辑地址都由一个段和偏移量组成,偏移量指明了从段开始的地方到实际地址之间的距离
2.线性地址
即虚拟地址,是一个32位无符号整数,用来表示4G的地址
3.物理地址
实际内存芯片上的地址
在linux中,由于所有的段都是从0x00000000开始,所以逻辑地址和线性地址是相同的,也就是在linux中忽略逻辑地址这个概念即可
线性地址转换物理地址
linux使用三级页表转换,与二级页表转换原理相似,以下按二级页表说明
32位线性地址分为三个部分,Directory(目录)/ Table(页表)/ Offset(偏移),如下
每个进程都有一个分配给它的页目录,当前活动进程的页目录的物理地址存放在控制寄存器CR3中,线性地址内的Directory字段决定页目录中的目录项,而目录项指向适当的页表,table字段又决定了具体的页表中的表项,而表项中含有页所在页框的物理地址,offset字段据定页框内的