虚拟地址空间和虚拟内存有什么区别?

时间:2021-06-29 14:38:48

标签: operating-system cpu-architecture virtual-address-space

当用户创建进程时,会创建一个虚拟空间地址,该地址是 32 位操作系统(0 到 2^32-1)的 4g 大小?进程认为它有整个内存可以使用,但虚拟地址被转换为物理地址并存储在进程的页表中。 我很困惑什么是虚拟内存?和虚拟地址空间一样吗?

1 个答案:

答案 0 :(得分:0)

<块引用>

虚拟地址空间和虚拟内存有什么区别?

虚拟地址空间实际上就是空间(就像后院棚屋是存储空间一样)。

虚拟内存是您可以放在虚拟空间中的东西(就像园艺工具可以放在后院棚子里的东西一样)。

您也可以将部分虚拟地址空间留空/未使用;或者在虚拟地址空间中放置一些不像内存的东西(例如内存映射设备)(就像你可以把后院棚子的一部分留空,或者把不是园艺工具的东西放在棚子里) .

一个更完整的例子;假设您有一个 32 位系统,虚拟地址空间为 4 GiB 或 4096 MiB。这 4096 MiB 的空间可能被拆分为 3072 MiB 的进程可以使用的“用户空间”,以及为内核本身保留的 1024 MiB 的“内核空间”。在这种情况下,它可能最终像:

  • 进程使用的 1024 MiB 空间用于虚拟内存

  • 进程未使用的 2048 MiB 空间(也不是虚拟内存)

  • 内核使用的 128 MiB 空间用于虚拟内存

  • 内核用于内存映射设备(非虚拟内存)的 32 MiB 空间

  • 864 MiB 未被内核使用的空间(也不是虚拟内存)

在那种情况下;您总共有“1024 + 128 = 1152 MiB”的虚拟内存(以及“2048 + 32 + 864 = 2944 MiB”的非虚拟内存空间)。