逻辑地址到线性地址:

逻辑地址 = 段标识符(或者叫段选择符)16位 + 偏移量 32位

段标识符 = index + tl + rpl

其中,cpu中的段寄存器只保存段标识符,根据其中的tl 确定段描述符在GDT还是LDT中,从不同的寄存器获取线性基地址,再加上index*8就得到了段描述符的地址,从段描述符中,取出base字段,再加上逻辑地址中的偏移量,就得到线性地址。

问题是:偏移量存哪里? 

 

线性地址到物理地址:

内存分页:将内存按照固定大小(比如4KB)分成多个页,线性地址转换成逻辑地址,要通过转换表

如果不通过转换表,那么4KB一页,4GB就是1024*1024页,每页的首地址用四个字节表示,就是4B*1024*1024 = 4MB的空间来表示首地址(可以看出是一本目录,从第一页到最后一页的页码都保存在目录里,目录本身就会很厚)。

如果用二级模式转换,10+10+12的话 形成跳跃的,树级的地址表示,可以表示2的32次方个线性地址。