深入理解Linux内核 - 第二章 内存寻址 03

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Linux内核 - 第二章 内存寻址 03相关的知识,希望对你有一定的参考价值。

问题:
1,逻辑地址怎么求?
2,段描述符的base字段怎么求?

逻辑地址:由16位段选择符和32位偏移量组成,并不是说这个地址就是段选择符偏移32位再和偏移量相加。

段选择符:或叫段标识符,是一个16位长的字段。顾名思义,用于选择段的。为了快速找到段选择符,处理器提供段寄存器。

15~3bit,段索引号,2bit TI位, 1 0 位,特权级别。

由于段选择符仅仅在转换成线性地址中发挥作用,则通常认为32位偏移量就是逻辑地址。也即c语言中用&求得一个变量的地址就是逻辑地址。

段描述符:段选择符中,段索引号指向的是在段描述符表中的段描述符,这个段描述符是由8个字节表示。包含Base等9个标识。所以,Base就包含在段描述中

段描述符放在全局描述符表(GDT)或局部述符表中(LDT)。GDT存放在内存中,地址和大小放在gdtr控制寄存器中。LDT放在ldtr控制寄存器中。

TSS:任务状态段。任务状态主要是由一些寄存器来表示,因此这个段用来保存处理器寄存器的内容。这个段只能在GDT中

线性地址:段描述符中的Base+逻辑地址偏移量

技术分享

 

问题:段描述符中的字段含义?



以上是关于深入理解Linux内核 - 第二章 内存寻址 03的主要内容,如果未能解决你的问题,请参考以下文章

深入理解Linux内核 - 第二章 内存寻址 01

深入理解Linux内核 - 第二章 内存寻址 04

准备把深入理解Linux内核这本书细看一遍

深入理解Linux内核笔记—第02章:内存寻址.md

深入理解计算机系统-之-内存寻址--linux中分段机制的实现方式

linux内存管理---虚拟地址逻辑地址线性地址物理地址的区别