diff --git a/blog/content/edition-2/posts/04-testing/index.zh-CN.md b/blog/content/edition-2/posts/04-testing/index.zh-CN.md index b40acd1cd..fafcc653f 100644 --- a/blog/content/edition-2/posts/04-testing/index.zh-CN.md +++ b/blog/content/edition-2/posts/04-testing/index.zh-CN.md @@ -989,7 +989,7 @@ harness = false #![no_main] use core::panic::PanicInfo; -use blog_os::{QemuExitCode, exit_qemu, serial_println}; +use blog_os::{QemuExitCode, exit_qemu, serial_println, serial_print}; #[no_mangle] pub extern "C" fn _start() -> ! { diff --git a/blog/content/edition-2/posts/08-paging-introduction/index.zh-CN.md b/blog/content/edition-2/posts/08-paging-introduction/index.zh-CN.md index a3f60a8e8..154f2aeb4 100644 --- a/blog/content/edition-2/posts/08-paging-introduction/index.zh-CN.md +++ b/blog/content/edition-2/posts/08-paging-introduction/index.zh-CN.md @@ -149,7 +149,7 @@ x86_64 平台使用4级页表,页大小为4KiB,无论层级,每个页表 ![Bits 0–12 are the page offset, bits 12–21 the level 1 index, bits 21–30 the level 2 index, bits 30–39 the level 3 index, and bits 39–48 the level 4 index](x86_64-table-indices-from-address.svg) -我们可以看到,每个表索引号占据9个字节,这当然是有道理的,每个表都有 2^9 = 512 个条目,低12位用来表示内存页的偏移量(2^12 bytes = 4KiB,而上文提到页大小为4KiB)。第48-64位毫无用处,这也就意味着 x86_64 并非真正的64位,因为它实际上支持48位地址。 +我们可以看到,每个表索引号占据 9 个比特,这当然是有道理的,每个表都有 2^9 = 512 个条目,低12位用来表示内存页的偏移量(2^12 bytes = 4KiB,而上文提到页大小为4KiB)。第 48-64 位毫无用处,这也就意味着 x86_64 并非真正的 64 位,因为它实际上支持 48 位地址。 [5-level page table]: https://en.wikipedia.org/wiki/Intel_5-level_paging @@ -191,7 +191,7 @@ x86_64 平台使用4级页表,页大小为4KiB,无论层级,每个页表 - 1个4级页表 - 512个3级页表(因为4级页表可以有512个条目) - 512*512个2级页表(因为每个3级页表可以有512个条目) -- 512*512*512个1级页表(因为每个2级页表可以有512个条目) +- 512\*512\*512个1级页表(因为每个2级页表可以有512个条目) ### 页表格式 @@ -225,7 +225,7 @@ pub struct PageTable { | 63 | no execute | 禁止在该页中运行代码(EFER寄存器中的NXE比特位必须一同被设置) | 我们可以看到,仅12–51位会用于存储页帧地址或页表地址,其余比特都用于存储标志位,或由操作系统自由使用。 -其原因就是,该地址总是指向一个4096比特对齐的地址、页表或者页帧的起始地址。 +其原因就是,该地址总是指向一个4096字节对齐的地址、页表或者页帧的起始地址。 这也就意味着0-11位始终为0,没有必要存储这些东西,硬件层面在使用该地址之前,也会将这12位比特设置为0,52-63位同理,因为x86_64平台仅支持52位物理地址(类似于上文中提到的仅支持48位虚拟地址的原因)。 进一步说明一下可用的标志位: