具有无限 RAM 的虚拟内存

Virtual memory with unlimited RAM

假设我有一台计算机,其中有足够的 RAM(理论想法)来容纳所有准备执行的进程。那我还需要虚拟内存吗?如果是,如果我的计算机没有虚拟内存,性能可能会发生什么变化?

虚拟内存的概念产生于如果主内存不够用,那么辅助内存可以作为主内存使用。

但是,在您的场景中,如果您有足够的 RAM 或主内存(在理想情况下),那么您不需要虚拟内存。

虚拟内存有 3 个用途:

  • 绕过障碍 - 例如安装的物理 RAM 数量有限

  • 提高性能 - 例如“内存映射文件”(假装数据从文件加载到内存中,即使它不是,并且昂贵的磁盘 IO 被推迟到实际需要时)

  • 强制执行 isolation/protection - 例如因此,一个虚拟地址 space 中的某些内容通常无法(没有特殊安排 - “共享内存”)访问不同虚拟地址 space.

    中的某些内容

And if yes what can be the possible change in performance if my computer doesn't have a virtual memory?

首先会发生的事情是所有软件都会因为没有任何隔离而崩溃。具体来说;每个进程都希望使用从(例如)0x0040000 开始的地址,并且会破坏彼此的代码(因为 2 个或更多进程不能同时使用相同的地址来处理不同的事情,除非它们使用不同的虚拟地址 spaces)。理论上;这个问题可以修复(例如,通过使用可重定位代码),使其“有效”(不会崩溃,但会成为巨大的安全灾难);但任何这样做的尝试都有其自身的性能成本。

性能的主要问题(忽略稳定性、安全性等)是进程(或 OS 本身 - 内核等)未使用的任何 RAM 都是 OS 可用于缓存文件和目录数据(以及 DNS 条目等)等内容。 avoid/reduce 使用物理 RAM(“写入时分配”、“写入时复制”、内存映射文件)的技巧是增加可用于(文件、目录、DNS、. .) 缓存并提高性能。理论上;如果你有几个 TiB 的 RAM(除了所有进程和 OS 本身之外,足以在 RAM 中缓存所有文件)那么虚拟内存的大部分性能优势都会消失(但前提是缓存是“热”的)并且不为空 - 例如,如果您从不重新启动计算机)。