Written Component
As with HW 5, a copy of these questions is provided in the handin/written.md file in your repository. Put your answers in that file.
A: Physical Memory Management
- What is the coremap used for? Where is it defined?
- What does the
piggish_kernelfunction do and why is it important? - When and why do pages get “pinned”? What operations require pinning?
- What is
coremap_alloc_multipagesused for and why must these pages be contiguous? - How does the system ensure that a page being evicted is written to swap if necessary?
B: Virtual Memory Organization
- What are
lpages used for, and how do they relate toaddrspaces andvm_objects? - The VM system can zero-fill pages on demand. How does it do that and what are the benefits?
- How many different types of VM objects might exist in a typical process's address space? What are they used for?
C: Page Fault Handling
- What functions are called when a page fault occurs? What's the call chain?
- What data structures are accessed during page-fault handling and in what order?
- How many pages can be paging in (via
swap_pagein) at a time? Why this limitation? - What's the difference between a major and minor page fault? How does the system handle each?
D: TLB Management
- What are the high and low parts of a TLB entry used for?
- What does
mmu_unmapdo and when is it necessary? - What is a “TLB shootdown” and why is it necessary in multiprocessor systems?
E: Swap Management
- What's the difference between
swap_allocandswap_reserve? Which one(s) can fail and why? - Why is swap space reservation necessary for zero-filled pages?
(When logged in, completion status appears here.)