A 32-bit virtual address becomes a physical byte
This figure documents the historical i386 source baseline. Current native x86-64/AArch64 qualification is recorded separately; this is not an ELF64 or native SMP implementation diagram.
31…22directory10 bits
21…12table10 bits
11…0offset12 bits
- CR3 → page directory1024 entries · bits 31…22 select PDE
- PDE → page table1024 entries · bits 21…12 select PTE
- PTE → physical frame4 KiB · frame base + permission flags
- Frame base + offset → physical byteBits 11…0 remain unchanged
The 10 / 10 / 12 split selects a directory entry, a table entry and a byte within a 4 KiB frame.
Text equivalent and source references
- Bits 31–22 index one of 1024 page-directory entries; bits 21–12 index one of 1024 page-table entries.
- The selected PTE identifies a frame and permissions. Its frame base combines with the unchanged low 12 bits to form the physical byte address. This is the x86-32 path.
Bit-field and dataflow. Source paths refer to the atlas baseline; the kernel checkout is private.
include/memory.h · PAGE_DIR_ENTRIES, PAGE_TABLE_ENTRIES, PAGE_FRAME_MASKkernel/core/memory.c · vmm_map_page, vmm_user_range_ok