Explain how to solve this problem.
Because the page manager can't rely having a page table available to resolve the page-table address, it has to implement a default mapping by assigning an arbitrary, empty page table to the process; the MMU can then start to work with the empty table and fill in the rest as needed.
Most answers to this question tripped over using the MMU to help solve this problem. Without a page table, the MMU isn't much use. Several answers added hardware to the MMU, mostly a presence bit. This might work (the details were sketchy), but pre-allocating a page table is simpler.
It acts as a cache holding virtual-address to physical-address mappings. As the MMU computes the mapping, the TLB much more quickly searches its cache for the virtual-memory address. If it finds a match, it can offer up the associated physical address, more quickly then can the MMU.
Most of the answers to this question were not right, although most were on the right track. The principle confusion stemmed from the role that virtual address played; many answers had the TLB producing virtual address, rather than consuming them.
The protection bits for a page are associated with the (inverted) page table entry for that page. An inverted page table has one entry per page frame, which means that any page in the inverted page table can have at most one set of protection bits.
Each page table has one entry per page, and each process has its own page table. Using page tables, it's possible to map different pages into the same page frame, sharing the page, and to assign the page different protections in each page table.
The answers were evenly split between inverted and regular page tables, although the page-table answers were somewhat unclear about how it was that sharing occurred.
A 43-bit virtual address space can be divided into 243/225 = 243-25 = 218 25-bit pages, which is about 256 k pages.
For some reason, a lot of people answered 43*25 = 1075 pages, which isn't even close. Other people claimed the problem was impossible to solve because I hadn't specified the page size, which is, I suppose, technically true.
This page last modified on 9 December 2003.