繁体   English   中英

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

[英]What decides the size of virtual address space available for a process?

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

是吗

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

  2. 32 位与 64 位处理器?

  3. 二级存储可用吗?

  4. 最大交换空间配置?

提前致谢

二级存储/交换空间与它无关,因为页面可以映射到你的地址空间而不被分配。 并且同一个页面可以映射到多个虚拟地址。 ([编辑] 这是默认行为,但vm.overcommit_memory sysctl 设置可用于阻止映射没有可用 RAM 或交换的 VM 页面。搜索该 sysctl 设置以获取更多信息。)

CPU 肯定设置了一个上限,而这本质上是 64 位系统的唯一限制。 尽管请注意当前的x86_64 处理器实际上并没有让您使用整个 64 位空间

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM