硬盘上的虚拟内存位置

Virtual memory location on hard-disk

我正在阅读有关分页和交换的内容-space,我对硬盘上有多少 space(以及在哪里)用于分页/交换感到有点困惑-出帧。让我们考虑以下场景:

  1. 我们有一个进程逐渐使用虚拟内存中较新的页面。每次新页,我们在物理内存中分配一个帧。
  2. 但过了一段时间,物理内存中的帧耗尽,我们选择一个受害者帧从 RAM 中删除。

我有以下疑惑:

  1. 受害帧是否被换出到交换 space 或调出到硬盘上的某个不同位置(除了交换-space)?
  2. 据我所知,swap space 通常是 RAM 大小的 1-2 倍左右,这是否意味着进程只能使用 RAM + swap-space 中的内存量全部的?或者它会不止于此并受虚拟内存大小的限制?

Does the victim frame get swapped out to the swap space or paged out to some different location (apart from swap-space) on the hard-disk?

它被交换到交换 space。交换 space 用于此。没有 swap space 的系统无法使用虚拟内存的这个特性。它还具有避免外部碎片和内存保护等其他功能。

From what I've seen, swap space is usually around 1-2x size of RAM, so does this mean a process can use only RAM + swap-space amount of memory in total? Or would it be more than that and limited by the size of virtual memory?

进程可用的总内存将为 RAM + swap-space。想象一台具有 1GB RAM + 1GB 交换空间 space 的计算机和一个需要 3GB 的进程。该进程的虚拟内存需求高于可用内存。这是行不通的,因为最终进程将访问所有这些 code/data 并且会使程序崩溃。基本上,进程映像大于 RAM + swap space,因此最终程序将从可执行文件中完全加载,计算机将根本没有足够的 space 来保存进程。它会使进程崩溃。

这里确实有 2 个选项。您可以直接将一部分过程存储在 RAM 中,也可以将其存储在交换 space 中。如果您的进程在这两个中都没有空间,那么内核就没有其他地方可去。因此它使进程崩溃。