如果这个问题取决于linux发行版,请以“一般方式”回答(即linux发行版上最常见的实现)。
在进程的页表中,我们可以找到我们正在寻找的页面在主内存中映射的物理方向,或者如果我们正在寻找的页面不存在于主内存中并且我们必须捕获它,则可以找到指向磁盘的指针从磁盘。但我的问题是:如果我们要查找的页面放在交换区中,我们会在该进程的页表上找到什么?我们会找到一个指向磁盘的指针(但指向交换区域中的页面),或者我们会找到一个物理方向,但这个物理方向是一个“虚拟方向”,这使得 mainMemory + swapArea 成为统一内存(即,如果我们有 16GB 主内存)内存 + 2GB 交换内存 我们可以在页表中看到我们要查找的页面位于 X 方向(X 是对应 17GB 的方向),这意味着我们将在交换内存中找到它(因为 > 16GB 方向))?请记住,我们假设 16GB 主内存 + 2GB 交换内存。
答案1
被换出的页的页表条目包含指示该事实的位(至少一个;详细信息取决于体系结构),以及指向描述交换页的信息的两部分指针。每个交换设备或文件都有一个对应的swap_info
结构,并且每个都有一个映射,将页表条目链接到交换设备或文件中的位置。
看内核如何寻址交换分区\文件上的交换内存页面?和“交换管理”章节梅尔·戈尔曼的了解 Linux 虚拟内存管理器了解详情。