个人理解所谓的Intel x86架构其实就是Intel 64和IA-32架构的总称。
IA-32架构支持三种基本的运行模式,每种模式下可执行的指令和可用的功能可能不一样:
-
保护模式(Protected Mode)。这是最常见的模式,这是一个受保护的并且支持多任务的环境。之所以受保护是因为在这个模式下,能够对内存及一些外围设备提供硬件级别的保护设置,如分段机制,分页机制。大部分OS都运行在这个模式下。
-
实地址模式(Read-address mode)。这个运行模式是为了兼容8086处理器,通常处理器上电后会处于这个模式,在实地址模式中,寻址空间只有1MB,CS、DS等称作Segment register,即段的基地址直接是Segment register的值向左移4位。在保护模式下,CS、DS等称作Segment selector,用于从GDT(Global Descriptor Table)或LDT(Local Descriptor Table)表中选择一个段描述符,基地址在段描述符内,两种情况下用法不一样,所以两者的寻址空间也差别很大。
-
系统管理模式(System management mode ,SMM)。这个模式提供一个跟平台相关的管理环境,比如电源管理,RAS(Reliability, Avaliability and Serviceability)功能配置或者系统安全等相关问题。这个模式下的code通常是由UEFI/BIOS提供的,对OS来说是透明的。SMM有自己独立的地址空间,OS是看不到的。处理器接收到SMI pin上的中断信号或者APIC接收到SMI中断信号的时候才会进入到S