多级页表

为啥要有多级页表假设系统用单页表,现有32位地址空间、大小为4k的页面、PTE(页表条目)的大小为4B那内存可以分为2^20 个页,即需要2^20 个PTE,那内存中需要一直存在一个2^20*4B(4MB)的页表那如果是64位机呢?(因为64位机虚拟地址空间远远大于物理内存大小,所以目前一般只用2^48位或更少的地址空间)即2^52*4B(16777216G)的页表常驻内存中???其...
摘要由CSDN通过智能技术生成

为啥要有多级页表

假设系统用单页表,现有32位地址空间、大小为4k的页面、PTE(页表条目)的大小为4B

那内存可以分为2^20 个页,即需要2^20 个PTE,那内存中需要一直存在一个2^20*4B(4MB)的页表

那如果是64位机呢?(因为64位机虚拟地址空间远远大于物理内存大小,所以目前一般只用2^48位或更少的地址空间)

即2^52*4B(16777216G)的页表常驻内存中???

其实页表大小就是内存(可寻址字节数)大小除以页面大小,因为用一个4B的PTE指向了4K的页面,所以页表大小就是虚拟内存大小/2^10 ,即虚拟地址空间越大,页表也随之变大,两者只差2^10倍。

由此可见,单页表在计算机位数较大时是不合适的

  • PTE为啥大小为4B呢?

因为地址空间为32位,即32位可以指向虚拟地址空间的任一字节,也就是4B的PTE可以指向任一地址

多级页表

因为单页表大小会随着虚拟地址空间的增加而增加,而为了快速查找页表地址连续,一个页表一次会得到被分配的连续内存(即页表就是页表项数组),所以一个页表如果有一个条目(PTE)在使用,整个页表都会加载在内存中

多级页表其实就是对页表实施分页管理,即内存中只常驻一级页表,一级页表的每个PTE指向一个二级页表的基地址,以此类推,最后一级页表存储物理块号和块内偏移量,因为页和块的大小相等,所以页偏移量和块偏移量相等,只块号不同,即虚拟地址通过查页表就是完成了

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值