[英]What decides the size of virtual address space available for a process?
进程可用的虚拟地址空间有什么限制?
是吗
32 位与 64 位地址总线?
32 位与 64 位处理器?
二级存储可用吗?
最大交换空间配置?
提前致谢
二级存储/交换空间与它无关,因为页面可以映射到你的地址空间而不被分配。 并且同一个页面可以映射到多个虚拟地址。 ([编辑] 这是默认行为,但vm.overcommit_memory sysctl 设置可用于阻止映射没有可用 RAM 或交换的 VM 页面。搜索该 sysctl 设置以获取更多信息。)
CPU 肯定设置了一个上限,而这本质上是 64 位系统的唯一限制。 尽管请注意当前的x86_64 处理器实际上并没有让您使用整个 64 位空间。
在 32 位 Linux 上,事情变得更加复杂。 旧版本的Linux为kernel保留每个进程2GB的虚拟空间; 较新的保留 1GB。 (如果 memory 服务,也就是说。我相信在编译 kernel 时这些是可配置的。)您是否认为该空间“可用于进程”是语义问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.