虚拟内存对应的是物理内存。所谓的物理内存,即内存的真实地址。而虚拟内存指的不是内存的真实地址,而是映射的地址。

产生原因

问题

程序A启动后,使用内存地址A
程序B启动后,也要使用内存地址A
于是,内存地址A被程序A、B争抢。

解决方式

程序A启动后,使用虚拟内存A,映射到物理内存某一个地址
程序B启动后,使用虚拟内存A,映射到物理内存的另一块地址
image.png

映射方式

虚拟内存 - 图2

谁来转换

CPU执行进程A获取进程A的虚拟地址,之后谁来转换成对应的物理内存地址呢?MMU(内存管理单元)就是负责这件事情的。
image.png
(感谢小林老师的图)