wiki.osdev.org 系列之(九)- GDT 教程
在 IA-32 和 x86-64 架构上,更准确地说是在保护模式或长模式下,中断服务例程和大量内存管理是通过描述符表来控制的。每个描述符都存储有关 CPU 在某个时间可能需要的单个对象的信息(例如,服务例程、任务、代码或数据块)。例如,如果您尝试将新值加载到段寄存器中,CPU 需要执行安全和访问控制检查,以查看您是否真的有权访问该特定内存区域。执行检查后,有用的值(例如最低和最高地址)将缓存在不可见的 CPU 寄存器中。 在这些体系结构中,共有三种此类表:全局描述符表、局部描述符表和中断描述符表(它取代了中断向量表)。每个表是通过 LGDT、LLDT 和 LIDT 指令分别使用它们的大小和到 CPU 的线性地址来定义的。在几乎所有用例中,这些表只在启动时放入内存一次,然后在需要时进行编辑。 关键词汇 Segment (段) 具有一致属性的逻辑上连续的内存块(从 CPU 的角度来看)。 段寄存器 CPU 的寄存器,它引用用于特定目的(CS、DS、SS、ES)或一般用途(FS、GS)的段 段选择器 对描述符的引用,您可以将其加载到段寄存器中;选择器是指向其条目之一的描述符表的偏移量。这些条....