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

Posted

tags:

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

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

段首地址的线性地址/偏移/粒度/特权限制等信息。

1,快速访问段描述符

在加载段选择符时,相应的段描述符被自动由内存装入对应的非编程CPU寄存器。装入后就不再访问主存中的GDT或LDT。

2,段选择符的字段

index:指定了放在GDT或LDT中相应段描述符的入口

TI:0 GDT 1 LDT

RPL:特权级,特指装入CS段中当前CPU的特权级。

3,段描述符地址换算

GDT地址:0x00020000

index:2

地址:0x00020000+(2*8))0x00020010

GDT最大数目2的13次方-1个。 原因:index刚好16-3=13位。

Linux上的分段:鼓励程序员将程序划分成逻辑上相关的实体,Linux却很有限地使用分段。分段和分页有点多余,他们都可以划分进程的物理地址空间。

分段可以将一个进程分配到不同的线性地址空间,分页可以把同一线性地址空间映射到不同的物理地址。Linux更喜欢分页方式。

Linux的user CS uesr DS kernel CS kernel DS都是0,说明没有用分段来映射不同的线性地址空间。所有的程序都使用了几乎相同的线性地址空间。

 

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

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

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

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

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

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

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