全局描述符表
维基百科,自由的 encyclopedia
全局描述符表 (GDT) 是一个从 Intel x86-系列处理器 80286 开始用于界定不同内存区域的特征的数据结构。 全局描述表位于内存中。全局描述表的条目描述及规定了不同内存分区的各种特征,包括基地址、大小和访问等特权如可执行和可写等。 在 Intel 的术语中,这些内存区域被称为 段 。
![]() |
全局描述表用于内存地址的转换。所有程序的内存访问都需要用到GDT中的有关内存区域即x86内存分段的信息。访问GDT需要使用segment selector和segment offset。处理器使用segment selector为索引查找GDT的条目。当适当的条目找到后,处理器将会做一系列的检查,包括检查segment offset尝试访问区间是否在此内存分段内,代码是否有权限访问此内存分段(检查分级保护域权限)等。[1]
为了加速全局描述表的访问,往segment寄存器里载入segment的值会使得GDT的特定条目被读入处理器内部的缓存中。之后的内存访问将会通过缓存进行处理。
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/SegmentDescriptor.svg/320px-SegmentDescriptor.svg.png)