《操作系统》之内存篇(三)-分页的页表结构

之前讨论了分段和分页,现在看下页表的主要涉及的页表结构。

分层分页

大多数现代计算机系统支持大逻辑地址空间(2^32 ~ 2^64)。这种情况下,页表本身可以非常大。
例如:假如具有32位逻辑地址空间的一个计算机系统。如果系统的页大小为4KB(2^12)。那么页表可以多达100万的条目 (2^32/ 2^12)。假设某个项目有4字节。那么每个进程需要4MB的地址物理地址来存储页表本身。显然,我们并不想在内存中连续分配这么多页表。
这个问题的一个简单的解决方法就是讲页表划分为更小的块。完成这种划分方法有很多种。

最简单的方法就是使用两层分页算法,就是将页表再分页,例如,再次假设一个系统,具有32位逻辑地址空间和4K大小的页。一个逻辑地址被分为20位的页码和12位的页偏移。
因此要对20位的页表进行再分页,所以该页码可以分10位的页码和10位的偏移。这样一个逻辑地址就会分为如下表示。
二级页表表示法
其中p1表示的用来访问外部页表的索引,而p2是内部页表的页偏移。采用这种结构的地址转换方法。由于地址转换有外向内,所以这种也称为向前映射页表。
向前映射页表在这种分页结构的方案中,假设,系统是64位系统,那么当它的地址空间就有2^64, 当再以4KB作为地址的话,那么页表就会2^52个条目,那么就把页表进行细分,从而形成三级分层分页,四级分层分页等等。

为了装换每个逻辑地址,74位的系统需要7个级别的分页,如此多的内存访问时不可取的,从而分层分页在64位的系统并不是最优的。

哈希页表

处理大于32位的地址空间的常用方法是哈希页表,采用虚拟页码作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值