为什么32位二进制进程不能超过4GB限制?

时间:2017-03-29 20:48:57

标签: memory-management out-of-memory 32-bit

在尝试在Linux上加载更多out of memory (OOM)时遇到32bit binaries and 32 bit Perl 2-3GB of data into memory个问题。

总是想知道为什么OS with Demand Paging功能,不能将驻留页面换成磁盘并加载更多页面以超过4GB限制?

可能会发生频繁发生页面错误(影响性能),但绝不会遇到OOM问题?

2 个答案:

答案 0 :(得分:1)

这是因为32位处理器在访问内存时只能寻址32位,3 GB(3×10243字节)是此操作的限制。

答案 1 :(得分:0)

32位定义逻辑地址空间的大小。您的程序可以随时访问最多2 ** 32字节的内存。

如果进程可用的物理内存少于2 ** 32字节,那么操作系统会将页面交换到磁盘。

在过去,当物理内存多于地址空间时(例如,16位地址空间和1MB内存),处理器通常以您建议的方式支持地址空间的交换段