理解ProtectedMode下的全局描述符表GDT

需积分: 49 17 下载量 101 浏览量 更新于2024-09-14 1 收藏 212KB PDF 举报
"这篇文档详细解释了Intel处理器中的全局描述符表(GDT)概念,旨在帮助读者深入理解CPU的工作原理,特别是在保护模式下的内存管理机制。" 在Intel处理器的保护模式下,全局描述符表(GDT)扮演着至关重要的角色。GDT是一个数据结构,用于存储关于内存段的信息,这些信息包括段的基地址(BaseAddress)和限制(Limit),以及与段相关的其他属性,如访问权限和特权级别。这个数据结构的引入主要是为了增强内存管理和安全性,对比实模式下的简单段机制。 在实模式下,程序通过段:偏移量(Segment:Offset)的方式来访问内存,其中段寄存器(如CS、DS、SS)指定段基地址,偏移量指定相对于该基地址的内存位置。然而,这种模式存在局限性,如每个段最大只能是64KB,并且段基地址由段寄存器左移4位得到,限制了内存的可寻址空间。 进入保护模式后,内存管理变得更加复杂和灵活。保护模式提供了两种内存管理模式:段模式和页模式。在段模式下,虽然仍使用段:偏移量方式访问内存,但此时的段基地址和限制都是32位,允许更大的内存寻址空间。IA-32架构允许将段基地址设置为32位系统能表示的任意值,限制可以设定为2^12(即4KB)的倍数,极大地扩展了内存管理的可能性。 GDT中每个条目称为描述符,它包含了段的详细信息。这些描述符包括但不限于: 1. 基地址(BaseAddress):32位,段的起始地址。 2. 限制(Limit):16位,表示段的长度,以字节为单位,可以是2^12的倍数。 3. 访问控制字(AccessFlags):描述段的访问权限、类型、特权级等信息。 4. 扩展基地址(Extended Base Address):对于大于1MB的段,32位基地址的高8位存储在这里。 5. 以及其他标志,如方向标志、全局/本地标志、默认操作大小等。 通过GDT,CPU能够实现对不同特权级别的内存访问控制,防止非法或越权操作。此外,GDT还支持多任务环境,允许操作系统同时运行多个进程,每个进程可以有自己的地址空间,通过选择不同的段描述符来切换上下文。 在保护模式的页模式下,内存地址的管理又增加了一层页表映射,使得内存地址的寻址更为精细,能够实现虚拟内存机制,如分页和分段结合的段页式管理。页模式可以提供更高级别的内存保护和隔离,防止一个进程对另一个进程的内存进行非法访问。 GDT是Intel处理器在保护模式下实现内存管理的关键组件,它为内存访问提供了灵活性和安全性,是理解现代操作系统底层工作原理的基础。通过学习和理解GDT,可以更好地掌握CPU如何管理内存,以及如何在软件层面实现多任务和安全的内存访问。