最大物理内存是多少?

问题描述 投票:0回答:1

考虑一个系统,其中32位用于地址。6位用于段,因此我们有2 ^ 6 = 254个段。14位用于分页=,所以我们有2 ^ 14 = 16K页。12位用于偏移量=所以我们有2 ^ 12 = 4KB页面大小。我的问题是系统可以支持的最大物理内存是多少?我正在考虑的解决方案是,如果页表条目的长度为32位,则可以提供32位用作物理地址的高位。因此,可以支持的最大物理内存为2 ^ 32 * 2 ^ 14 = 2 ^ 46,但是我不知道那是否正确,这意味着段不播放

memory-management operating-system paging cpu-architecture
1个回答
0
投票

物理地址大小不是由虚拟地址大小和页面大小唯一地确定。

相反,ISA的物理内存大小的上限是由页大小和页表条目中的物理页地址位数决定的>]。

例如,x86-64(和带有PAE的x86 32位)的PTE可以容纳52位物理页帧地址。

PTE本身有40个位,而低12位必须为0(页面帧自然对齐)。 x86 / x86-64将4k页= 12位用于物理和虚拟地址的字节内页部分。 Why in 64bit the virtual address are 4 bits short (48bit long) compared with the physical address (52 bit long)?带有格式图和一些不错的解释。

该页表格式的架构师选择对齐页号位域,以便它从#12位开始,而11:0位保留标志。因此,字段顶部的位置是物理地址宽度。如果它们的标志比页面偏移位多或少,则不是这种情况。


实际上,实际硬件可能仅实现较少数量的物理位。例如,我的i7-6700k台式机Skylake(通过CPUID)报告说它实现了39位物理地址(和48位虚拟地址)。在这种情况下,保留页表条目中高于39的较高位。

有趣的事实:PML5将x86-64的分页方案从4个级别(48位虚拟)扩展到5个级别(57位虚拟),而物理地址宽度没有变化。这再次提醒我们,物理地址和虚拟地址的宽度是独立的。

还要注意,由于没有足够的虚拟地址空间来映射所有RAM,因此编写操作系统确实很不方便。 Linus Torvalds写了关于PAE(32位x86上32位虚拟地址的宽物理地址)的娱乐性和信息量,quoted on someone's blog

© www.soinside.com 2019 - 2024. All rights reserved.