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
  1. CR3 → page directory1024 entries · bits 31…22 select PDE
  2. PDE → page table1024 entries · bits 21…12 select PTE
  3. PTE → physical frame4 KiB · frame base + permission flags
  4. 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_MASK
  • kernel/core/memory.c · vmm_map_page, vmm_user_range_ok