linux单进程最大内存,x64 Linux中的单进程最大可能内存

当前的64位Linux内核对64TB的物理RAM和128TB的虚拟内存有限制(请参阅RHEL limits和Debian port)。由于CPU中的地址寄存器如何使用所有位(高位用于页面标志,例如ReadOnly,Writable等),所以当前的x86_64 CPU(即我们在PC中拥有的)具有(虚拟)地址限制2^48 = 256TB。 ExecuteDisable,PagedToDisc等),但规范允许切换到真正的64位地址模式,在2^64 = 16EB(Exa字节)处达到最大值。但是,主板和CPU芯片没有太多的引脚来通过地址总线将所有48位存储器地址传送到RAM芯片,因此物理RAM的限制较低(取决于制造商),但虚拟地址空间本质上可以超过主板上RAM的数量,超过上述虚拟内存的限制。

每个进程的限制是通过如何设置进程的内存虚拟地址空间来提高的,因为堆栈,mmap()区域(和动态库),程序代码本身以及内核映射到进程空间。其中一些设置可以通过向链接器传递参数(有时通过源代码中的特殊指令)或直接使用程序修改二进制文件(二进制文件具有ELF格式)来更改。机器(root)已设置或用户拥有的管理员也有限制(请参阅命令“ulimit -a”的输出)。这些限制可能很软或很难,用户无法克服硬限制。

此外,Linux内核可以设置为允许内存过度使用分配。在这种情况下,程序可以分配大量的RAM,然后只使用几页(参见稀疏矩阵,稀疏矩阵),请参阅Linux kernel documentation。所以在这种情况下,只有在数据填满所请求的内存之后,程序才会失败,而不是在内存分配时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值