这是操作系统和计算机体系结构中的核心概念,理解 逻辑地址 和 物理地址 是掌握虚拟内存、进程隔离、内存管理的基础。
一句话区分
- 逻辑地址(Logical Address):程序运行时看到的地址,由 CPU 生成。
- 物理地址(Physical Address):内存芯片实际使用的地址,用来访问真实的内存单元。
详细解释
一、逻辑地址(也叫虚拟地址)
- 是程序在运行时使用的地址,由 CPU 在执行指令时生成。
- 它并不直接对应实际内存中的物理单元。
- 程序员写代码时看到的地址(如变量地址
0x8048000)就是逻辑地址。 - 通过 MMU(内存管理单元) 或操作系统进行转换,才能访问内存。
📌 逻辑地址 ≠ 物理地址,操作系统会将逻辑地址映射到物理地址。
二、物理地址
- 是内存硬件上的实际地址,如内存条第 1000000 个字节。
- 由硬件(MMU)结合操作系统页表来从逻辑地址计算得出。
- 是真实存在的、用于寻址 DRAM 的地址。
三、逻辑地址到物理地址的转换过程(简化)
CPU 发出逻辑地址(虚拟地址)
↓
MMU 查找页表(由操作系统维护)
↓
将逻辑地址转换为物理地址
↓
访问内存中的真实位置
四、举例说明
假设你有如下代码:
int a = 10;
-
在程序中
&a = 0x00401000(逻辑地址) -
操作系统建立了虚拟内存映射后:
0x00401000→0xA0001000(物理地址)
-
真实访问内存的是
0xA0001000
五、总结对比
| 项目 | 逻辑地址(虚拟地址) | 物理地址 |
|---|---|---|
| 谁生成 | CPU 在运行时 | 操作系统 + MMU 映射得到 |
| 谁使用 | 程序员 / 编程语言 | 内存控制器 / 硬件访问 |
| 是否连续 | 对程序员是连续的 | 实际可能是分散的 |
| 是否受保护 | 是,操作系统隔离不同进程 | 否,直接访问物理硬件 |
拓展阅读(可选)
- 逻辑地址与线性地址(x86 分段机制下)
- 虚拟内存分页机制(页表、多级页表、TLB)
mmap、brk如何映射逻辑地址- Nginx、Java 中如何利用虚拟内存

被折叠的 条评论
为什么被折叠?



