CPU通过地址来访问内存中的单元,地址有物理地址虚拟地址之分。

物理地址:

如果CPU没有MMUMemory Management Unit,内存管理单元),或者有MMU但没有启用,CPU在访问内存时发出的地址将直接传送到地址总线上,使具有相同地址的物理存储器被读写,此时的地址称为物理地址(Physical Address,以下简称 PA),如下图所示:

01_物理地址和虚拟地址的区别 - 图1

图 1. 物理地址示意图

虚拟地址:

如果CPU启用了MMU,CPU核发出的地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(Virtual Address,以下简称VA),而MMU将这个地址翻译成真正的物理地址发送到地址总线上,也就是将虚拟地址映射成物理地址,如下图所示:

01_物理地址和虚拟地址的区别 - 图2

图 2. 虚拟地址示意图

虚拟地址映射到物理地址以页(Page)为单位

注:
对于32位CPU通常一页大小为4K( 常见2的n次幂值,可访问:https://www.softool.cn/blog-19.html )。
例如:虚拟地址 0xB700 1000 ~ 0xB700 1FFF 是一个页,可能被MMU映射到物理地址 0x0000 2000 ~ 0x0000 FFFF ,物理内存中的一个物理页面也称为一个页框(Page Frame)。