I am trying to understand how multi-level page table saves memory. As per my understanding, Multi-level page table in total consumes more memory than single-level page table.
Example : Consider a memory system with page size 64KB and 32-bit processor. Each entry in the page table is 4 Bytes.
Single-level Page Table : 16 (2^16 = 64KB) bits are required to represent page offset. So rest 16-bits are used to index into page table. So
*Size of page table = 2^16(# of pages) * 4 Bytes(Size of each page table entry) = 2^18 Bytes*
Multi-level Page Table : In case of two-level page table, lets use first 10-most significant bits to index into first level page table. Next 10-bits to index into second level page table, which has the page number to frame number mappings. Rest 12-bits represents the page offset.
Size of a second-level page table = 2^10 (# of entries) * 4 bytes(size of each entry) = 4 KB
Total size of all the second-level page tables = 2^10 (# of second-level page tables) * 4KB (Size of each second-level page table) = 4 MB
Size of first-level page table = 2^10(# of entries) * (10/8) Bytes (Size of each entry) = 1.25 KB
Total memory required to store first and second level page tables = 4 MB + 1.25 KB
So we need more memory to store multi-level page tables.
If this is the case, How does multi-level page tables save memory space ?