虚拟存储器系统

技术来源

  • 来源1:来源于服务器中虚拟化feature的实现,不同的程序需要共享一片硬件资源,包括计算资源与存储资源;如何有效且安全的共享存储器就是关键。
  • 来源2:消除有限的主存容量对大的程序的限制。远古时代,大的程序需要程序猿手动分块,每块大小不能超过主存容量,并且保证后看的块不会用到之前的块的数据。

最终,主存就相当于是磁盘的“cache”了,并很好的适应了近些年云计算的需求。

一些概念

  • 虚拟地址(VA):CPU发出的地址,用于访问抽象出来的虚拟寄存器的地址;
  • 物理地址(PA):经过转换后的实际地址,会真正用来访问cache/ddr和磁盘的地址;
  • 页(page):可以理解成存储块,主存与磁盘/闪存进行数据搬运的最小单位;
  • 页表:用于将CPU的虚拟地址到物理地址的查找表,每个程序(进程)有专有的页表,存于主存中;
  • 主存:目前指DRAM阵列,包括DDR和HBM,内部存放的信息包括页表与页;
  • TLB:主存中页表的缓存,加速VA到PA的转换,并降低TLB缺失代价;
  • 共享内存:每个进程的页表中的页表项对应到主存中的同一个物理页面,即内存共享;

访存流程

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这里需要确认一下,这里有两条路:

  • 页表的更新
  • 数据的更新

有几个确定结论:

  • 如果主存中的页表缺失,那TLB一定是缺失的,因为TLB只是一个页表的cache;
  • 如果主存中的页表缺失,那么该页在主存中一定也是没有的,
  • 是否主存中的页表更新后,主存中的页也会立即进行更新?

多级页表

问题:如果一个页大小为4KB,虚拟地址空间为4GB,那么一个进程产生的页表项为1M,大量进程会使得主存被页表占用。

  • 对于一级页表,220为1M,每个页表项中,物理页号再为20bit,一个程序的页表大小在20Mb
  • 对于两级页表,相当于把虚拟页号再细分,一个程序的页表大小约等于(210+210)*20=40Kb
  • 但是这样带来的代价直接代价是VA到PA地址转换变慢。
  • 在一级页表中,读取内存中一页内容需要2次访问内存,第一次是访问页表项,第二次是访问要读取的一页数据。但在二级页表中,就需要3次访问内存了,第一次访问页目录项,第二次访问页表项,第三次访问要读取的一页数据。访存次数的增加也就意味着访问数据所花费的总时间增加。

在这里插入图片描述

操作系统的内存管理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值