linux页中间级目录,Linux是几级页表?

Linux是几级页表?

地址:逻辑地址 --(段表)–> 线性地址 --(页表)–> 物理地址

页表的启用,体现在线性地址上,若启用页表,要完成线性地址和物理地址的转化;逻辑地址到线性地址,就是取低48位,64位中用于寻址的,实际只用了48位。

先看下系统的页表大小:

root@hw2:~# getconf PAGE_SIZE

4096

Linux的页表分配是根据cpu来设计的,不同平台(cpu)分页不同,这里考虑x86平台:

平台

linux页表

地址分配

可表示大小

x86

二级页表

10,10,12=32

4GB

x86_amd

四级页表

9,9,9,9,12=48(线性地址)

256TB

intel 48物理地址划分:

对应是:

单元

描述

页全局目录

Page Global Directory

页上级目录

Page Upper Directory

页中间目录

Page Middle Directory

页表

Page Table

页内偏移

Page Offset

Linux把计算机分成独立层/依赖层两个层次,对于页面的映射和管理也是;linux从最初的2级页表,到3级页表(x86支持物理地址扩展),再到4级页表(64cpu)。

总结来说:页表大小位4KB,所以页内地址需要12位,虚拟地址64位,需要8B,那一页最多存储4KB/8B=2^9,即一级页表占用9位,intel x86_64平台使用48位物理地址,剩余的48-32=9x4可以构成四级页表,48位物理地址可以表示多大的内存空间,2^48B=256TB,此外,x86系列是向后兼容的,为什么是4级页表?因为linux一路从2级页表、3级页表,再到当前的4级页表,满足当前需要,若未来那天不够用了,当然会扩展出更大的。

参考:

Linux分页机制之概述–Linux内存管理(六)

内核必须懂(七): Linux四级页表(x64)

逻辑地址、线性地址、物理地址和虚拟地址理解

操作系统 内存地址(逻辑地址、线性地址、物理地址)概念

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值