From b65e10aa876968424afb15dc57a67b8275a1f47e Mon Sep 17 00:00:00 2001 From: Jay <100614624+jaywang98@users.noreply.github.com> Date: Thu, 18 Dec 2025 14:35:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=2032=20=E4=BD=8D?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=8D=95=E7=BA=A7=E9=A1=B5=E8=A1=A8=E5=A4=A7?= =?UTF-8?q?=E5=B0=8F=E7=9A=84=E8=AE=A1=E7=AE=97=E9=80=BB=E8=BE=91=E4=B8=8E?= =?UTF-8?q?=E5=8D=95=E4=BD=8D=E6=8D=A2=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正了文档中关于“32 位环境下单级页表占用 4MB 内存”的计算推导过程。 原逻辑在计算单位换算时, 公式表述不清晰, 存在异常,现明确计算流程如下: 页表项数量:4GB / 4KB = 2^20 个; 总字节数:2^20 (项) * 4 (字节/项) = 4,194,304 Bytes; 单位换算:4,194,304 / 1024 (换算为 KB) / 1024 (换算为 MB) = 4MB。 --- .../operating-system/operating-system-basic-questions-02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cs-basics/operating-system/operating-system-basic-questions-02.md b/docs/cs-basics/operating-system/operating-system-basic-questions-02.md index bd4ad745f85..d4a33b253a4 100644 --- a/docs/cs-basics/operating-system/operating-system-basic-questions-02.md +++ b/docs/cs-basics/operating-system/operating-system-basic-questions-02.md @@ -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。 系统运行的应用程序多起来的话,页表的开销还是非常大的。而且,绝大部分应用程序可能只能用到页表中的几项,其他的白白浪费了。