I understand the padding that takes place between the members of a struct to ensure correct alignment of individual types. However, why does the data structure have to be a
"...aligning a page on a page-sized boundary lets the
hardware map a virtual address to a physical address by substituting
the higher bits in the address, rather than doing complex arithmetic."
By the way, I found the Wikipedia page on this quite well written.