gpt4 book ai didi

memory - UNIX 和 Linux 和 Windows 的进程内存限制和地址空间

转载 作者:行者123 更新时间:2023-12-01 09:00:02 24 4
gpt4 key购买 nike

在 UNIX 和 Linux 和 windows 中单个进程的最大内存量是多少?如何计算? 4 GB RAM 需要多少用户地址空间和内核地址空间?

最佳答案

4 GB RAM 需要多少用户地址空间和内核地址空间?

一个进程的地址空间分为两部分,

用户空间:在标准 32 位 x86_64 架构上,最大可寻址内存为 4G​​B,其中地址从 0x00000000 >0xbfffffff = (3GB) 表示代码、数据段。当用户进程在用户模式或内核模式下执行时,可以寻址该区域。

内核空间:类似地,从 0xc00000000xffffffff = (1GB) 的地址用于虚拟地址内核空间,只有当进程在内核模式下执行时才能寻址。

x86 上的这个特定地址空间分割由 PAGE_OFFSET 的值决定。引用Linux 3.11.1v page_32_types.hpage_64_types.h ,页面偏移量定义如下,

#define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)

在哪里 Kconfig定义 default 0xC0000000 的默认值,还可以使用其他地址拆分选项。

同样适用于 64 位,

#define __PAGE_OFFSET _AC(0xffff880000000000, UL).

在 64 位架构上,3G/1G 由于地址空间巨大,拆分不再成立。根据源最新的 Linux 版本已将上述偏移量作为偏移量。

当我看到我的 64 位 x86_64 架构时,一个 32 位进程可以拥有整个 4G​​B 的用户地址空间,并且内核将保持地址范围高于 4G​​B。有趣的是,在现代 64 位 x86_64 CPU 上,并不是所有的地址线都被启用(或者地址总线不够大)来为我们提供 2^64 = 16 exabytes 的虚拟地址空间.也许 AMD64/x86 架构分别启用了 48/42 低位,从而导致 2^48 = 256TB/2^42= 4TB 地址空间。现在,这无疑提高了大量 RAM 的性能,同时出现了如何在操作系统限制下有效管理它的问题。

关于memory - UNIX 和 Linux 和 Windows 的进程内存限制和地址空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com