Memory linux如何中断64位虚拟地址?

Memory linux如何中断64位虚拟地址?,memory,Memory,假设一个4级页表,其中前3级是9位,最后一级是12位,那么最大虚拟地址不应该是3*9+12=39位吗 今天我偶然发现我的地址有47位长。 e、 g0x7fb329caa3c0一个页面地址为212字节的内存。一个页面表有一个页面大,每个条目有8个字节,所以一个页面表包含29个条目,所以一个页面表地址为221个字节。页面目录是类似的,因此地址为230字节。页面目录指针表(PDPT)的级别更高一级,因此地址为239字节。最后,当前的英特尔体系结构还有一个级别,即PML4,寻址248位。我认为你在分析中

假设一个4级页表,其中前3级是9位,最后一级是12位,那么最大虚拟地址不应该是3*9+12=39位吗

今天我偶然发现我的地址有47位长。
e、 g0x7fb329caa3c0

一个页面地址为212字节的内存。一个页面表有一个页面大,每个条目有8个字节,所以一个页面表包含29个条目,所以一个页面表地址为221个字节。页面目录是类似的,因此地址为230字节。页面目录指针表(PDPT)的级别更高一级,因此地址为239字节。最后,当前的英特尔体系结构还有一个级别,即PML4,寻址248位。我认为你在分析中遗漏了最后一个层次。规范寻址将其分为两半,因此您有一个较低的247字节空间和一个较高的247字节空间。

在“64位体系结构”一节中,他谈到了两个不相交的部分,其中两个部分都大于39位在引用页面的下半部分有一个输入错误:00007FFF而不是008FFF(007FFFFF是56位实现的范围)好的,我从这里得到了我提供的结构:但结果表明,图片显示的是一个三级页表,而不是四级页表。(我在计算页表层次结构中的页偏移量)