Skip to content

Commit b65e10a

Browse files
authored
fix: 修正 32 位系统单级页表大小的计算逻辑与单位换算
修正了文档中关于“32 位环境下单级页表占用 4MB 内存”的计算推导过程。 原逻辑在计算单位换算时, 公式表述不清晰, 存在异常,现明确计算流程如下: 页表项数量:4GB / 4KB = 2^20 个; 总字节数:2^20 (项) * 4 (字节/项) = 4,194,304 Bytes; 单位换算:4,194,304 / 1024 (换算为 KB) / 1024 (换算为 MB) = 4MB。
1 parent 1aff02c commit b65e10a

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

docs/cs-basics/operating-system/operating-system-basic-questions-02.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ MMU 将虚拟地址翻译为物理地址的主要机制有 3 种:
211211

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

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

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

0 commit comments

Comments
 (0)