A page table maps from page index to page-frame number. Because every process has the same page indices but a different mapping page frames, each process's page table must be kept distinct from all other processes' page tables to avoiding ambiguous mappings.
An inverted page table maps from page-frame numbers, which are unique, to page indices, which are not. However, the look-up goes in the opposite direction, from page indices to page-frame numbers (via content-addressable memory). One answer could be "neither" because without a context-switch flush, the interpretation of a page index is ambiguous. However, most inverted page tables (the assignment simulator included) use the process id and page index as the search value, which disambiguates the page index, making context-switch flushing unnecessary.
Most answers to this question were correct.
By giving a reasonably good estimate of processes' frequently accessed pages, working sets let the memory manager run close to but not over the paging rate high-water mark. In addition working-set estimates provide a measure of memory-allocation commitment, determining whether or not new processes can be usefully let into the system.
This was a gimme.
Loops have a significant effect on paging behavior; a compiler could keep track of the size of loop bodies in pages and use as a hint the largest page count for any loop body, possibly modified by a small factor.
Call chains through page-disjoint procedures can be another source of bad paging behavior, particularly if done in a loop body. In this case the compiler can assume each procedure called resides in a separate page and use the depth of the call tree as a hint.
This was an anti-gimme; perhaps the compiler part was too distracting.
The low-water mark trades off disk utility for CPU throughput, occasionally chasing a process from the CPU for paging. This trade-off is fair for processes that would occasionally leave the CPU anyway. However, for compute-bound processes it is unhelpful, causing unnecessary interruptions where none would have occurred. It would be best to lower the low-water mark to reduce the amount of paging when the executing processes are predominantly compute bound.
The incorrect answers tended to ignore the low-water mark part of the question.
This page last modified on 29 November 2004.