Final Answer:
The total size in bytes of the page tables for the smallest program is 4MB.
Step-by-step explanation:
The virtual address space of the machine is 32 bits, which means that the maximum addressable memory is 2^32 bytes.
The page size is 64 KB, which means that each page contains 2^16 bytes. The address is divided into 4 parts a, b, c, and d, with the first three parts used to index into a three-level page table, and the fourth is used to index into the location on the page.
The values for a, b, c, and d are 4, 6, 6, and 16, respectively, resulting in a 64 KB sized page.
The smallest program contains a single page of text and heap, starting at location 0, and a separate page for the stack, starting at location 0xFFFFFFFF and running downwards.
Therefore, the program requires two pages of memory. Each page requires three levels of page tables, and each page table entry is 4 bytes.
Therefore, the total size of the page tables for the smallest program is:
2 * 3 * (2^16 / 2^9) * 4 = 2^22 bytes = 4 MB