Linux虚拟地址超过4G吗,Linux如何在x86-64中支持超过512GB的虚拟地址范围?

The root of the page table can only map up to 512 GB of contiguous virtual address space. So how Linux can support more than 512GB of virtual address range? Does it uses multiple page tables for each process? If yes, then for a process what should the CR3 (x86-64’s register to contain the address of the base of the page table) contain for any given process? Am I missing something?

我不知道“页面表的根目录”是什么意思,但x86-64上的分页看起来像这样:

>页表 – 最低级别的分页结构.每个都有512个8字节条目(PTE)描述一个4 KiB页面,因此PT描述512 * 4 KiB = 2 MiB的内存(它也可以作为2 MiB页面使用,但现在让我们离开它).

>页面目录 – 表,类似于PT,包含指向PT的512个8字节条目(PDE);因此,PD描述512 * 2 MiB = 1 GiB的内存(它也可以作为1 GiB页面,类似于PT).

>页面目录页面表 – 类似于PD,但包含指向PD的512个8字节条目(PDPTE);所以,PDPTE描述了512 * 1 Gib = 512 GiB的内存.

> PML4,最高级别的分页结构,是包含512个8字节条目(PML4E)的表,指向PDPT;所以,PML4描述了512 * 512 GiB = 256 TiB的内存.

我不知道Linux的确切内存映射,但可能更高的一半(从-128 TiB到0 – 从0xFFFF800000000000到0xFFFFFFFFFFFFFFFF)保留给内核,下半部分(从0到128 TiB – 从0x0000000000000000到0x00007FFFFFFFFFFF)是用户空间应用程序因此,Linux支持512倍于您要求的512 GiB虚拟地址范围;甚至托瓦兹也不会说“我们不会支持PML4”.我不知道是什么让你感到困惑 – 是你错过了这个部分,说页面表映射2 MiB并且你已经把它当作一个页面映射 – 4 KiB – 但是如果有什么我可以澄清,请询问它.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值