虚拟内存地址和物理内存地址?为什么我们程序里地址连续?为什么需要TLB Translation lookaside buffer

物理地址(实际在内存硬件里面的地址)是实在的存在于计算机中的一个实体,程序访问到了就可以直接修改,哪怕这个是分配给其他进程的。
虚拟地址(指令里用到的内存地址)并不真实存在于计算机中,每个进程都分配有自己的虚拟空间,而且只能访问自己被分配使用的空间。这样可以将程序做到内存隔离。

为什么我们程序里地址连续?
首先程序的占用的内存空间是连续的,因为执行的时候是程序计数器是顺序地一条一条指令执行的,所以指令必须放在一起。
所以就需要在物理内存上找一段连续的分给他,也就是通过物理内存分段进行映射,但是这样会导致物理内存上产生大量碎片。
所以就需要内存分页,将物理内存预先切成一段固定大小的空间,同时将程序需要的内存也切成固定的空间(页),这样在程序运行的时候将需要的页加载到物理内存即可。
由于程序拿到的都是虚拟内存,所以都是连续的,但是在实际物理内存上,页分配到物理内存的位置可能不同,在物理内存的地址根据实际情况不同,可能是分段连续的。

为什么需要TLB Translation lookaside buffer?
由于加入了页,会导致访问一个物理内存,需要多次查表,所以需要对内存映射的地址进行缓存(TLB),加速其访问到物理内存的速度。

TLB原理 - 知乎

虚拟内存和物理内存,虚拟地址和物理内存地址之间的映射机制 - codemelo - 博客园

虚拟地址空间和物理地址空间_打酱油的;的博客-CSDN博客_虚拟地址和物理地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值