2021-10-14

表项

为了让内存可以为不同的虚拟机共享,在虚拟地址和机器地址中引入物理地址的概念,客户操作系统感觉自己的物理地址是从0开始的连续地址,然而物理地址到机器地址一般情况下是不连续的,这样就保证了所有的机器内存可以被任意分配给不同的客户操作系统。
虚拟地址<——>物理地址<——>机器地址
P2M页表:物理地址到机器地址的映射(phy to machine)
M2P页表:机器地址到物理地址的映射(machine to phy)
影子页表(shadow):在全虚拟化中实现虚拟地址到物理地址的转换

为了将进程划分为一个个页面可以不用连续的存放在内存中,我们引入了页表的概念。操作系统会为每个进程建立一张页表,实现页号和内存块号之间的对应关系。
假设某计算机系统按字节寻址,支持32位逻辑地址,采用分页存储管理,页面大小为4KB,页表项长度为4B。4KB 页面大小说明页内地址要用12位表示,剩余20位表示页号。因此,该系统中用户进程最多有2^20页(1M),相应的,一个进程的页表中,最多会有1M个页表项,一个页表最大需要1M * 4B = 4MB。一个页框(内存块)大小为4B,所以需要4MB/4KB = 1K个页框存储该页表。
如何解决页表过大需要连续存储的问题呢?解决方案:可以将长长的页表进行分组,使每个页面中刚好可以放下一个分组。
如上面的例子中,页面的大小4KB,每个页表项4B,所以每个页面中可以存放1K个页表项,因此每1K个连续的页表项为一组,每组刚好占一个页面,再将各组离散的放在各个内存块中。这样就需要为离散的页表再建立一张页表,称为页目录表,或外层页表,或顶层页表。
因此我们可以看到:
1)若是采用单级页表,有1M个页面(连续),每个页面对应一个内存块。
2)若是采用二级页表,每个一级页表(共1024个)中的页面对应的内存块指向一组(1024个)二级页表,每个二级页面对应一个内存块。则二级页表需要的最大连续内存块大小仅为1024。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值