BIOS(Basic Input/Output System)的物理内存布局是计算机启动和运行时关键的低层内存分配结构。以下是典型的 x86架构 的物理内存布局(以传统 16MB 以下的区域为例):
物理内存布局图(Legacy x86)
+----------------------- 0xFFFFFFFF (4GB) -----------------------+
| 保留给硬件(如PCI设备、BIOS ROM等) |
+----------------------- 0xC0000000 (3GB) -----------------------+
| 高端内存(内核动态映射区域,具体布局由操作系统决定) |
+----------------------- 0x100000 (1MB) -------------------------+
| **Extended Memory** (操作系统和应用程序使用) |
| 0x100000 (1MB) - 0x9FFFFF (16MB以下) |
+----------------------- 0xA0000 (640KB) ------------------------+
| **Video RAM** (显卡显存) |
| 0xA0000 - 0xBFFFF (128KB) |
| - 0xA0000: VGA 图形模式帧缓冲区 |
| - 0xB8000: 文本模式字符缓冲区(彩色文本) |
+----------------------- 0x9FFFF (640KB) ------------------------+
| **Conventional Memory** (传统内存,BIOS和DOS使用) |
| 0x00000 - 0x9FFFF (640KB) |
| - 0x00000: **Interrupt Vector Table (IVT)** |
| - 0x00400: **BIOS Data Area (BDA)** |
| - 0x00500: **DOS 暂存区**(可选) |
| - 0x07C00: **Bootloader** (MBR被加载到此处) |
| - 0x07E00: Bootloader 后续代码 |
+----------------------- 0x00000 --------------------------------+
关键区域说明
-
0x00000 - 0x003FF
- 中断向量表 (IVT):256个中断服务例程的地址(实模式使用)。
-
0x00400 - 0x004FF
- BIOS 数据区 (BDA):硬件状态信息(如串口端口、内存大小等)。
-
0x00500 - 0x07BFF
- 自由空间:DOS或Bootloader可用的临时内存。
-
0x07C00 - 0x07DFF
- MBR 加载地址:BIOS将引导扇区(512字节)加载到此执行。
-
0xA0000 - 0xBFFFF
-
显卡内存映射:
-
0xA0000-0xAFFFF:VGA图形模式。 -
0xB8000-0xBFFFF:文本模式(80x25彩色文本)。
-
-
显卡内存映射:
-
0xC0000 - 0xFFFFF
-
BIOS ROM 映射:
-
0xC0000-0xC7FFF:Video BIOS(显卡固件)。 -
0xF0000-0xFFFFF:主板BIOS代码(启动时执行)。
-
-
BIOS ROM 映射:
-
0x100000 (1MB) 以上
-
扩展内存:由操作系统管理(如Linux的
ZONE_NORMAL)。
-
扩展内存:由操作系统管理(如Linux的
现代系统的变化
- UEFI:不再依赖传统内存布局,直接调用UEFI运行时服务。
- 保护模式/长模式:操作系统启用分页后,物理地址被重新映射。
- Reserved Regions:ACPI表、TPM、PCIe配置空间等可能占用其他区域。
注意事项
- 实模式(Real Mode)只能访问 1MB 以下内存。
- 保护模式(Protected Mode)可访问全部物理内存,但需通过分页机制管理。
- 内存布局可能因硬件(如ARM架构)或固件(如Coreboot)而异。













网友评论