【1】CPU寻址方式
现代的处理器使用的都是一种叫做虚拟地址寻址(Virtual Addressing) 的寻址方式
使用虚拟地址,CPU要将虚拟地址翻译成物理地址才能访问实际的物理内存
内存管理单元(MMU): CPU内部的一个硬件,负责完成虚拟地址到物理地址的转换
【2】为什么需要虚拟地址?
反向思考:若没有虚拟地址呢?
在没有虚拟地址的空间中,程序都是直接访问的实际物理地址(即直接操作物理内存),这样造成了如下问题:
- 用户程序可以任意访问内存,任意寻址内存的每个字节,没有顺序,没有规则,这样非常容易造成操作系统损坏(OS崩溃)
- 无法同时运行多个程度
例如:需要同时运行微信和QQ,此时微信给地址7XXX的内存赋值,然后QQ也给地址为7XXX的内存赋值,于是后赋值的会直接覆盖前赋值的,造成程序崩溃
故:若没有虚拟地址而直接采用物理地址,则会给操作系统带了损坏以及无法同时运行多个程序
虚拟地址寻址的优点:
- 程序可以用一系列相邻的虚拟地址访问实际物理内存中不相邻的大内存缓冲区
相邻 ——> 不相邻
- 程序可以用一系列虚拟地址访问大于可用物理内存的内存缓冲区
小 ——> 大
- 不同进程操作的虚拟地址分隔开
即不同进程不会操作同一个物理地址,造成程序崩溃