详见:
可以将物理内存看作一个大数组,每个单元为1B(字节对齐)。数组的下标就是物理地址(Physical Address, PA)。通过物理地址可以访问物理内存单元。
内存上运行着很多进程。如果不做内存管理,直接通过物理地址使用物理内存,就会低效而不安全。
如果物理内存上只运行一个程序,还是有必要做内存管理。原因待补充。
为了高效而安全地使用内存,引入了虚拟内存。
虚拟内存是对物理内存的抽象。意思是每个进程具有自己的连续、统一的地址空间,因此能够高效而安全地使用内存。
操作系统负责将进程自己的地址空间映射到物理内存上,虚拟地址(Virtual Address, VA)就是进程自己地址空间上使用的地址。CPU中的内存管理单元(Memory Management Unit, MMU)负责将虚拟地址翻译成物理地址。
用户编写程序时使用的是虚拟地址,所以CPU执行指令时,指令中的地址也是虚拟地址。CPU在取指、访存的时候,都先将虚拟地址发送给MMU,翻译成物理地址后再从物理内存上取指令或数据。