1

1

我已经开始了解虚拟地址空间(VAS),我有几个问题:

  1. 根据架构(32 位和 64 位),为每个进程创建多少 VAS?
  2. 每个进程的VAS都是在硬盘上创建的吗?如果是这样,如果空间不足怎么办?
  3. VAS中存储的内容有哪些,如文本、数据、BSS?

答案1

  1. 每个进程都会获得所需的虚拟地址空间,最多可达特定于体系结构和配置的最大值。可以使用以下命令调整分配的内存量brksbrk, 和mmap

    目前 x86-64 上可用的最大值是128 TiB 四级页表,64 PiB 五级页表。在 32 位 x86 上,可用的最大值取决于VM拆分配置;每个进程的大小在 1 GiB 到 3 GiB 之间变化。

  2. 不。

  3. 每个进程的地址空间包含进程可能需要访问内存的所有内容。地址空间可以在不映射到物理内存的情况下进行分配。

答案2

1

它可能因架构而异,对于 x86 / x86-64 来说是这样。

  • 32位有2GB或3GB
  • 64 位内核上的 32 位应用程序有 4GB
  • 64 位应用程序(64 位内核)有 2⁶³GB(很多)。

2

3

一切:文本、数据、BSS 等。这并不意味着分配了任何物理内存。有时是延迟分配给 RAM,有时是映射到硬件,有时是映射到计算。

相关内容