Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
fix: 修正 32 位系统单级页表大小的计算逻辑与单位换算
修正了文档中关于“32 位环境下单级页表占用 4MB 内存”的计算推导过程。

原逻辑在计算单位换算时, 公式表述不清晰, 存在异常,现明确计算流程如下:

页表项数量:4GB / 4KB = 2^20 个;

总字节数:2^20 (项) * 4 (字节/项) = 4,194,304 Bytes;

单位换算:4,194,304 / 1024 (换算为 KB) / 1024 (换算为 MB) = 4MB。
  • Loading branch information
jaywang98 authored Dec 18, 2025
commit b65e10aa876968424afb15dc57a67b8275a1f47e
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ MMU 将虚拟地址翻译为物理地址的主要机制有 3 种:

#### 单级页表有什么问题?为什么需要多级页表?

以 32 位的环境为例,虚拟地址空间范围共有 2^32(4G)。假设 一个页的大小是 2^12(4KB),那页表项共有 4G / 4K = 2^20 个。每个页表项为一个地址,占用 4 字节,`2^20 * 2^2 / 1024 * 1024= 4MB`。也就是说一个程序啥都不干,页表大小就得占用 4M。
以 32 位的环境为例,虚拟地址空间范围共有 2^32(4G)。假设 一个页的大小是 2^12(4KB),那页表项共有 4G / 4K = 2^20 个。每个页表项为一个地址,占用 4 字节,`(2^20 * 2^2) / (1024 * 1024)= 4MB`。也就是说一个程序啥都不干,页表大小就得占用 4M。

系统运行的应用程序多起来的话,页表的开销还是非常大的。而且,绝大部分应用程序可能只能用到页表中的几项,其他的白白浪费了。

Expand Down