Memory management 4GB进程如何仅在2GB RAM上运行?

Memory management 4GB进程如何仅在2GB RAM上运行?,memory-management,operating-system,out-of-memory,virtual-memory,Memory Management,Operating System,Out Of Memory,Virtual Memory,给定32位/64位处理器,4GB进程可以在2GB RAM上运行。它会使用虚拟内存还是根本不会运行?如果磁盘交换空间可用,则64位操作系统上需要4GB的64位进程通常可以在2GB的物理RAM中运行,但如果频繁访问所有内存,性能将受到严重影响 实际上,32位进程无法精确寻址4GB内存(操作系统需要一些地址空间开销),因此无法运行。根据操作系统的不同,它可能会运行一个需要大于2GB和32GB,这取决于用户分配的页面文件量 Microsoft提供了一个有用的解决方案,可以打破各种操作系统版本/版本上的各

给定32位/64位处理器,4GB进程可以在2GB RAM上运行。它会使用虚拟内存还是根本不会运行?

如果磁盘交换空间可用,则64位操作系统上需要4GB的64位进程通常可以在2GB的物理RAM中运行,但如果频繁访问所有内存,性能将受到严重影响


实际上,32位进程无法精确寻址4GB内存(操作系统需要一些地址空间开销),因此无法运行。根据操作系统的不同,它可能会运行一个需要大于2GB和<3-4GB的进程。

在64位操作系统上需要4GB的64位进程通常可以在2GB的物理RAM中运行,前提是磁盘交换空间可用,但如果频繁访问所有这些内存,性能将受到严重影响


实际上,32位进程无法精确寻址4GB内存(操作系统需要一些地址空间开销),因此无法运行。根据操作系统的不同,它可能会运行一个需要大于2GB和<3-4GB的进程。

这是高度依赖于平台的。在许多32位操作系统上,无论安装了什么物理内存或分配了什么虚拟内存,任何单个进程都不能使用超过2GB的内存

例如,我的工作计算机使用32位Linux和PAE(物理地址扩展),允许安装16GB的RAM。但是,每个进程2GB的限制仍然适用。有了额外的RAM,我就可以运行更多的进程。32位Windows也是这样

64位操作系统更像是一个混合包。64位Linux将允许单个进程映射超过32GB的内存(但不同的内核也会有所不同)。您将仅受到交换量(Linux虚拟内存)的限制。64位Windows完全是一个废物。某些版本每个进程只允许2GB,但大多数版本只允许>32GB,这取决于用户分配的页面文件量


Microsoft提供了一个有用的解决方案,可以打破各种操作系统版本/版本上的各种内存限制。不幸的是,我在粗略搜索Linux时找不到这样的表,因为它太零碎了。

这是高度依赖于平台的。在许多32位操作系统上,无论安装了什么物理内存或分配了什么虚拟内存,任何单个进程都不能使用超过2GB的内存

例如,我的工作计算机使用32位Linux和PAE(物理地址扩展),允许安装16GB的RAM。但是,每个进程2GB的限制仍然适用。有了额外的RAM,我就可以运行更多的进程。32位Windows也是这样

64位操作系统更像是一个混合包。64位Linux将允许单个进程映射超过32GB的内存(但不同的内核也会有所不同)。您将仅受到交换量(Linux虚拟内存)的限制。64位Windows完全是一个废物。某些版本每个进程只允许2GB,但大多数版本只允许>32GB,这取决于用户分配的页面文件量


Microsoft提供了一个有用的解决方案,可以打破各种操作系统版本/版本上的各种内存限制。不幸的是,我在粗略搜索Linux时找不到这样的表,因为它太零碎了。

简短回答:取决于系统

大多数32位系统的每个进程限制为2GB。如果您的系统允许每个进程的容量大于2GB,那么我们可以进入问题的下一部分

大多数现代系统使用虚拟内存。然而,有一些受限的(和各种各样的旧)系统会耗尽空间,让你哭泣。我相信支持MMU和无MMU架构。大多数32位处理器都有MMU(少数没有,请参阅),少数16位或8位处理器也有MMU(请参阅和)

任何需要比物理可用内存更多内存的进程都需要某种形式的内存交换(例如,分区或文件)


虚拟内存分为若干页。在某些情况下,一个页面要么驻留在RAM中,要么驻留在交换中。任何试图访问未加载到RAM中的内存页的尝试都将触发一个名为的中断,该中断由内核处理。

简短回答:取决于系统

大多数32位系统的每个进程限制为2GB。如果您的系统允许每个进程的容量大于2GB,那么我们可以进入问题的下一部分

大多数现代系统使用虚拟内存。然而,有一些受限的(和各种各样的旧)系统会耗尽空间,让你哭泣。我相信支持MMU和无MMU架构。大多数32位处理器都有MMU(少数没有,请参阅),少数16位或8位处理器也有MMU(请参阅和)

任何需要比物理可用内存更多内存的进程都需要某种形式的内存交换(例如,分区或文件)


虚拟内存分为若干页。在某些情况下,一个页面要么驻留在RAM中,要么驻留在交换中。任何试图访问未加载到RAM中的内存页的行为都会触发一个名为的中断,该中断由内核处理。

可以肯定,这更多地取决于它是如何编译的以及程序本身使用了多少RAM。可以肯定的是,这更多地取决于它是如何编译的以及程序本身使用了多少RAM。即使使用PAE,大多数32位操作系统和64位操作系统运行的32位进程只允许单个进程映射2GB内存。@Aruistante感谢您的更正。我确实更新了答案以反映情况。即使使用PAE,大多数32位操作系统和64位操作系统运行的32位进程也只允许单个进程映射2GB内存。@Aruistante感谢您的更正。我确实更新了答案以反映。谢谢你的解释。这真的帮了我的忙。谢谢你的解释。它真的帮助了我。