微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决虚拟地址空间和虚拟内存有什么区别?

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

解决方法

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

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

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

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

一个更完整的例子;假设您有一个 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”的非虚拟内存空间)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。