【问题标题】:(Paging) Does every page have an offset?(分页)每个页面都有偏移量吗?
【发布时间】:2026-02-03 01:20:05
【问题描述】:

PS:我真的不知道这是否离题(我阅读了问题帮助),但我在同一主题的网站上看到了一个问题(但不是同一个问题) 并且它并没有作为离题而关闭,所以只是假设。

无论如何,我正在学习和研究 Paging,但我对 Pages 的结构感到非常困惑。 我用谷歌搜索无济于事(我可能只是不擅长谷歌),每篇关于 Paging 的论文都很混乱。

整个虚拟内存是否有一个偏移量?还是我只是迷失在仙境??

如果可能的话,有人可以举一个实际的例子来说明分页是如何工作的吗?

【问题讨论】:

  • 每一页都是一块虚拟内存,“偏移量”只是索引该页的向量。
  • @TonyTannous - 所以每个页面都有一个偏移量?
  • 是的。您有两个数组,每个数组都有一个索引。您不要对两者使用相同的索引...
  • 您有 log2(page-size) 位来充当特定页面的偏移量。
  • @UndercoverCoder 如有任何疑问。

标签: operating-system paging page-tables


【解决方案1】:

Virtual Memory 只是一大块虚构的连续内存块。它在那里,因此程序员无需知道或担心实际的物理地址规范。他们可以坐下来担心他们的程序逻辑或算法以及其他与机器无关的东西。

在发生任何读取或写入之前,这些虚拟地址会通过内存管理单元(MMU)转换为实际的物理地址。具体来说,它是由 page table 完成的,它只是 MMU 的一部分。

除了这个分页允许有非连续的内存分配,所以我们没有external fragmentation

如果您了解基础知识,则此主题非常简单。我会在 youtube 上推荐 David Black-Schaffer 的视频。

【讨论】:

  • 非常感谢。确实有助于澄清主题:)