主要区别
实模式(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-0x004FF | BIOS数据区 | 256字节 |
| 0x0A000-0x0BFFF | 视频缓冲区 | 128KB |
| 0x0C000-0x0FFFF | BIOS ROM | 16KB |
保护模式
保护模式是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 | 控制寄存器0 | PE位(位0)控制保护模式开关 |
| CR3 | 页目录基址寄存器 | 分页机制启用时使用 |