操作系统面试题(十三):CPU寻址?为什么需要虚拟地址?

在这里插入图片描述
在这里插入图片描述


【1】CPU寻址方式

现代的处理器使用的都是一种叫做虚拟地址寻址(Virtual Addressing) 的寻址方式

使用虚拟地址,CPU要将虚拟地址翻译成物理地址才能访问实际的物理内存

内存管理单元(MMU): CPU内部的一个硬件,负责完成虚拟地址到物理地址的转换


【2】为什么需要虚拟地址?

反向思考:若没有虚拟地址呢?
在没有虚拟地址的空间中,程序都是直接访问的实际物理地址(即直接操作物理内存),这样造成了如下问题:

  1. 用户程序可以任意访问内存,任意寻址内存的每个字节,没有顺序,没有规则,这样非常容易造成操作系统损坏(OS崩溃)
  2. 无法同时运行多个程度

例如:需要同时运行微信和QQ,此时微信给地址7XXX的内存赋值,然后QQ也给地址为7XXX的内存赋值,于是后赋值的会直接覆盖前赋值的,造成程序崩溃

故:若没有虚拟地址而直接采用物理地址,则会给操作系统带了损坏以及无法同时运行多个程序

虚拟地址寻址的优点:

  • 程序可以用一系列相邻的虚拟地址访问实际物理内存中不相邻的大内存缓冲区

相邻 ——> 不相邻

  • 程序可以用一系列虚拟地址访问大于可用物理内存的内存缓冲区

小 ——> 大

  • 不同进程操作的虚拟地址分隔开

即不同进程不会操作同一个物理地址,造成程序崩溃

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值