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

Sha*_*316 2 linux memory operating-system

进程可用的虚拟地址空间有什么限制?

是吗

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

  2. 32位与64位处理器?

  3. 二级存储可用吗?

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

提前致谢

Nem*_*emo 5

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

CPU肯定会设置一个上限,这实际上是64位系统的唯一限制.虽然请注意,当前的x86_64处理器实际上并不允许您使用整个64位空间.

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

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