逻辑地址 和 物理地址

这是操作系统和计算机体系结构中的核心概念,理解 逻辑地址物理地址 是掌握虚拟内存、进程隔离、内存管理的基础。


一句话区分

  • 逻辑地址(Logical Address):程序运行时看到的地址,由 CPU 生成。
  • 物理地址(Physical Address):内存芯片实际使用的地址,用来访问真实的内存单元。

详细解释

一、逻辑地址(也叫虚拟地址)

  • 程序在运行时使用的地址,由 CPU 在执行指令时生成。
  • 它并不直接对应实际内存中的物理单元。
  • 程序员写代码时看到的地址(如变量地址 0x8048000)就是逻辑地址。
  • 通过 MMU(内存管理单元) 或操作系统进行转换,才能访问内存。

📌 逻辑地址 ≠ 物理地址,操作系统会将逻辑地址映射到物理地址。


二、物理地址

  • 内存硬件上的实际地址,如内存条第 1000000 个字节。
  • 由硬件(MMU)结合操作系统页表来从逻辑地址计算得出。
  • 是真实存在的、用于寻址 DRAM 的地址。

三、逻辑地址到物理地址的转换过程(简化)

CPU 发出逻辑地址(虚拟地址) 
   ↓
MMU 查找页表(由操作系统维护)
   ↓
将逻辑地址转换为物理地址
   ↓
访问内存中的真实位置

四、举例说明

假设你有如下代码:

int a = 10;
  • 在程序中 &a = 0x00401000(逻辑地址)

  • 操作系统建立了虚拟内存映射后:

    • 0x004010000xA0001000(物理地址)
  • 真实访问内存的是 0xA0001000


五、总结对比

项目逻辑地址(虚拟地址)物理地址
谁生成CPU 在运行时操作系统 + MMU 映射得到
谁使用程序员 / 编程语言内存控制器 / 硬件访问
是否连续对程序员是连续的实际可能是分散的
是否受保护是,操作系统隔离不同进程否,直接访问物理硬件

拓展阅读(可选)

  • 逻辑地址与线性地址(x86 分段机制下)
  • 虚拟内存分页机制(页表、多级页表、TLB)
  • mmapbrk 如何映射逻辑地址
  • Nginx、Java 中如何利用虚拟内存
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思静鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值