什么是实模式和保护模式?

226 阅读3分钟

主要区别

实模式(Real Mode)和保护模式(Protected Mode)是x86架构处理器在不同工作状态下的两种运行模式,主要区别在于内存管理和权限控制。

实模式

x86 实模式(Real Mode)是 Intel 8086/8088 及早期 x86 CPU 的默认运行模式,也是现代 x86 CPU 启动时的初始模式。它采用 16 位寻址 和 分段内存管理,具有以下核心特性:

 寻址方式(20位物理地址)

  • 公式物理地址 = 段寄存器 * 16 + 偏移地址

  • 地址总线:20位(可访问1MB内存空间:0x00000–0xFFFFF)

  • 寄存器

    寄存器作用示例计算
    CS代码段寄存器CS=0x1234, IP=0x5678 → 0x179B8
    DS数据段寄存器DS=0xA000, SI=0x0BCD → 0xA0BCD
    SS堆栈段寄存器SS=0x3000, SP=0xFF00 → 0x3FF00
    ES额外段寄存器ES=0xC000, DI=0x00FF → 0xC00FF

2. 寄存器体系(16位宽度)

graph LR
   A[通用寄存器] --> B[AX-累加器]
   A --> C[BX-基址寄存器]
   A --> D[CX-计数器]
   A --> E[DX-数据寄存器]
   F[索引寄存器] --> G[SI-源索引]
   F --> H[DI-目标索引]
   I[指针寄存器] --> J[SP-堆栈指针]
   I --> K[BP-基址指针]
   L[段寄存器] --> M[CS,DS,SS,ES]

3. 内存布局

地址范围用途大小
0x00000-0x003FF中断向量表(IVT)1KB
0x00400-0x004FFBIOS数据区256字节
0x0A000-0x0BFFF视频缓冲区128KB
0x0C000-0x0FFFFBIOS ROM16KB

保护模式

保护模式是x86架构的核心运行模式,为现代操作系统提供了内存保护虚拟内存多任务隔离等关键功能。

一、核心机制与组件

1. 寻址机制(32位保护模式)

graph LR
    A[逻辑地址] -->|段选择符:偏移| B(段机制)
    B --> C{是否启用分页?}
    C -->|是| D[分页单元]
    C -->|否| E[线性地址=物理地址]
    D --> F[物理地址]

2. 关键数据结构

a) 全局描述符表(GDT)
字段大小描述
段基址32位段在物理内存的起始地址
段界限20位段的大小限制
类型4位代码/数据/系统段等
特权级2位Descriptor Privilege Level (0-3)
存在位1位段是否在内存中
粒度1位段界限单位(0=字节,1=4KB)
b) 中断描述符表(IDT)
struct IDT_entry {
    uint16_t offset_low;   // 中断处理程序低16位
    uint16_t selector;      // 代码段选择符
    uint8_t zero;           // 保留
    uint8_t type_attr;      // 门类型和属性
    uint16_t offset_high;  // 中断处理程序高16位
};

3. 寄存器体系扩展

寄存器功能特殊说明
GDTR存储GDT基址和界限加载指令:LGDT [gdtr]
IDTR存储IDT基址和界限加载指令:LIDT [idtr]
CR0控制寄存器0PE位(位0)控制保护模式开关
CR3页目录基址寄存器分页机制启用时使用