【问题标题】:What decides the size of virtual address space available for a process?什么决定了进程可用的虚拟地址空间的大小?
【发布时间】:2011-10-09 12:30:50
【问题描述】:

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

是吗

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

  2. 32 位与 64 位处理器?

  3. 辅助存储可用?

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

提前致谢

【问题讨论】:

标签: linux memory operating-system


【解决方案1】:

辅助存储/交换空间与它无关,因为页面可以映射到您的地址空间而不被分配。并且同一个页面可以映射到多个虚拟地址。 ([编辑] 这是默认行为,但 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2019-07-03
    相关资源
    最近更新 更多