Appearance
7. Why Offset is Used in Paging
If we stored the exact physical address of every byte, the table would be enormous. Instead a virtual address is split into a page number and an offset within the page:
Virtual Address = [ Page Number | Offset ]The page table only needs to map page numbers to frame numbers; the offset is copied unchanged into the physical address (Physical = Frame_Number << page_bits | Offset). This shrinks the table from "one entry per byte" to "one entry per page" — e.g., with 4KB pages, one table entry covers 4096 bytes.