《深入理解Linux内核》内存寻址学习心得
?
1.三种地址:逻辑地址,线性地址,物理地址。
三者的详细解释:
逻辑地址(logical address):由段(segment)(16位)和偏移量(offset或displacement)(32位)组成。
线性地址(linear address)(也称虚拟地址virtual address):是一个32位无符号整数,用来表示高达4GB的地址。
物理地址(physical address):实际地址。
分段目的:把逻辑地址转换为线性地址,如下图所示:
2.1段标识符和段寄存器
段标识符(段选择符)(存放在段寄存器中)字段如下:
index用来得到段描述符在GDT或LDT中的偏移(位置)
TI指明段描述符是在GDT中(TI=0)或在LDT中(TI=1)
RPL请求特权级,
由于一个段描述符是8字节,因此它的地址=GDT或LDT内的首地址+(index*8)。能够保存在GDT中的段描述符的最大数目是8191(213-1),其中13是index的位数。
不同段的段描述符构成段描述符表,段描述符(8字节)存放在全局描述符表(GDT)或局部描述符表(LDT)中。GDT在主存中的地址和大小存放在gdtr控制寄存器中,当前正被使用的LDT地址和大小存放在ldtr控制寄存器中。
2.2段描述符
CPL(Current Privilege Level)
原创力文档

文档评论(0)