什么决定了进程可用的虚拟地址空间的大小?

时间:2011-07-20 15:34:13

标签: linux memory operating-system

流程可用的虚拟地址空间有哪些限制?

是吗

  1. 32位Vs 64位地址总线?

  2. 32位与64位处理器?

  3. 可用二级存储空间?

  4. 配置了最大交换空间?

  5. 提前致谢

1 个答案:

答案 0 :(得分:5)

辅助存储/交换空间与它无关,因为页面可以映射到您的地址空间而不会被分配。并且可以在多个虚拟地址处映射相同的页面。 ([edit]这是默认行为,但vm.overcommit_memory sysctl设置可用于防止没有RAM或交换可用的VM页面的映射。请在该sysctl设置上搜索以获取更多信息。 )

CPU肯定会设置一个上限,这实际上是64位系统的唯一限制。虽然注意到当前x86_64 processors do not actually let you use the entire 64-bit space

在32位Linux上,事情变得更加复杂。较早版本的Linux为内核保留了每个进程2GB的虚拟空间;较新的预留1GB。 (如果内存服务,那就是。我相信在编译内核时这些是可配置的。)你是否认为“可用于进程”的空间是一个语义问题。

Linux还具有可通过setrlimitgetrlimit访问的每进程资源限制RLIMIT_AS。