什么时候必须使用 PAE/NX?

什么时候必须使用 PAE/NX?

我想知道什么时候需要使用PAE/NX,什么时候不需要。

我是否一直需要它,或者我不能在我的虚拟机上使用它?

答案1

如果您正在虚拟化 32 位操作系统并且需要超过 4GB 的内存,则需要 PAE。

答案2

评论由@gronostaj 和回答@ajostergaard 的两篇文章都只讨论了 PAE/NX 中的物理地址扩展 (PAE) 部分。这两篇文章都很棒,我只想补充说明一下——事情的“原因”。我还将讨论“NX”部分。


我的答案1

也许更完整的答案(扩展@ajostergaard 的答案)是:

如果您要设置虚拟 32 位操作系统,则需要 PAE/NX,并且:

1)你需要超过 4 GiB 的内存(RAM)

或者

2)你需要能够使部分内存不能用于可执行代码,例如,如果你有安全问题,包括如NX-bit 维基百科页面已归档),

[某些类型的恶意软件可以通过将其代码插入另一个程序的数据存储区域并从此部分运行其自己的代码来控制计算机......

此外,据我所知,在将任何 64 位操作系统设置为虚拟机时,您不需要此 PAE/NX 选项。(请注意,我只使用了 Intel 和 AMD CPU - 其他处理器可能需要 PAE/NX。请务必检查!


下面,我将描述 PAE/NX 中 NX 部分的含义以及它与安全问题的关系。

(基本上,我在寻找完整的答案。谷歌把我带到这里,但我被“NX”部分难住了。我希望我的发现能对其他人有所帮助。)


对 PAE 的评论

从第一段开始可能很难PAE 维基页面已归档)@ajostergaard 的回答。第一段是:

在计算领域,物理地址扩展 (PAE),有时也称为页面地址扩展,是 x86 架构的内存管理功能。PAE 最早由 Intel 在 Pentium Pro 中引入,后来由 AMD 在 Athlon 处理器中引入。它定义了一个三级(而不是两级)的页表层次结构,每个表条目为 64 位而不是 32 位,允许这些 CPU 直接访问大于 4 GB(2 32字节)的物理地址空间。

什么?!这如何帮助我们知道是否要单击“启用 PAE/NX”旁边的复选框?幸运的是,@ajostergaard告诉我们

如果您正在虚拟化 32 位操作系统并且需要超过 4GB 的内存,则需要 PAE。

因此,如果您的虚拟操作系统是 32 位类型(就像您想要虚拟 Windows-NT 操作系统时的情况一样),但您有 16GB 的 RAM(您想使用全部),那么您需要 PAE 选项。

为什么?让我进一步阐述一下。你需要知道内存地址已归档) 是内存的一部分的标签 - 通常为一个字节的内存。32 位(4 字节)操作系统的标签可以从

零(0)——以二进制表示为 32 个零,以十六进制表示为0x 00 00 00 00——

4 294 967 295-- 二进制:32 个 1,十六进制:0x FF FF FF FF

换句话说,我们有将近 43 亿个内存地址,每个地址指向一个字节的信息 - 一个字节的内存。关键是:32 位计算机(使用所有 32 位进行寻址)可以寻址的最大内存量是 4 GiB。2如果您的 RAM 中有更多的内存空间,那很好,但计算机将永远无法找到数据的标签。换句话说,32 位机器不能使用超过 4 GiB 的数据。

无需过多深入细节(太晚了?),PAE 所做的就是引入一些技巧,以便可以寻址更大的内存(我们可以为更多字节的数据贴上标签),因此可以使用这些更大的内存。

现在让我们考虑一下 64 位计算机可以寻址的数据量,该计算机使用所有字节进行内存标记/寻址。标签可以从

零 ( 0) -- 二进制 64 个零,十六进制:0x0000000000000000--

18 446 744 073 709 551 615= 18.4 千万亿 = 184 亿亿亿——二进制十六进制的 64 个 1。0xFFFFFFFFFFFFFFFF我们有 184 亿亿亿字节数据的地址。也就是 18.4 艾字节 =18 447拍字节 = 近 1850 万兆字节。根据Wolfram|Alpha屏幕截图_64),相当于1/54全球所有数据信息量的 。相比之下,9/10单层 DVD 的Wolfram|Alpha笔记可以存储 4GiB(屏幕截图 32)。3

NX 部分

实际上,64 位机器不会使用全部 64 位来寻址内存 - 它们不需要这样做,我希望1/54-of-the-planet's-data 讨论已经说明了这一点。正如 PAE wiki 文章在其第二段落,

x86-64 CPU [64 位机器] 使用的页表结构...使用 64 位页表条目的最高位作为不可执行或“NX”位,表示无法从关联页面执行代码。

更多信息请参阅NX-bit 维基百科文章。NX 位的基本思想是,它表示可以标记由 64 位标签 (_plus_NX-bit_plus_other-stuff) 寻址的内存字节,以便正在运行的程序无法使用它。除其他外,这可以防止本答案开头描述的攻击类型。

现在,让我们回到这个事实:复选框用于 PAE/NX。用于使更多内存位置可访问的相同技巧也可用于添加 NX 位。再次引用 PAE 维基百科文章的第二段,

当这些 CPU 运行 32 位操作系统时,NX 功能也可在保护模式下使用,前提是操作系统启用了 PAE。


笔记:

1) 这个答案展示了我的发现过程。如果有人需要澄清或纠正我所写的任何内容,我会非常高兴。

2)实际上,一般不会使用全部 32 位来进行内存寻址,因此 32 位机器可寻址的内存大小可能小于 4 GiB

3)另一个有趣的数据量比较来自此来源已归档)。

据 Videomaker 介绍,“一小时的标准清晰度 DV 素材需要大约 12.7GB 的存储空间,即每分钟大约 217MB。相比之下,一小时的 RAW 4K 内容需要近 110GB 的存储空间,即每分钟大约 2GB。”

因此,32 位机器可以使用足够的内存来播放 15 分钟的标准清晰度 DV(视频)或 2 分钟的原始 4K 视频。(请注意,由于视频编解码器的现状,在我的旧款 Android 手机达到 4GB 文件大小限制之前,我可以以压缩 MP4 格式获得近 12 分钟的 4K 视频。)

另一方面,64 位机器可以使用足够的内存来存储多年165 643的 SD DV(视频)或19 131多年的原始 4K 视频。


我将写下我在写这个答案时发现有用的一些其他参考资料。

64 位/x86_64 或 x_64已归档)对比 32 位 / x86已归档),想想Program Files (x86)已归档) 文件夹或您有时在安装文件名中看到的 、_x86x86_64x64

使用以前(位数不大)架构的软件已归档

相关内容