ECEn 324 Review Topics: Chapter 9
ECEn 324 Review Topics: Chapter 9
- Why is virtual memory an important concept? (What does it do for
us when we program?)
- What is the overhead of supporting the abstraction of virtual
memory, both in software and in hardware?
- What are the similarities and differences between an SRAM cache and
main memory in its role as a cache for virtual memory pages from disk?
(Consider management, placement, replacement, detecting hits, write
policy, miss times, etc.)
- What three states can a virtual page be in?
- What is a page table? (What information is in a typical
PTE? Why is the table an essential part of a virtual memory system?
How many page tables are there in a system?)
- What is a page fault, how is it detected, and how is it
handled?
- What are swapping and paging? (What does it mean
for a page to be paged out or paged in? What is
demand paging? How does paging relate to thrashing?)
- What is the working set of a process?
- How does virtual memory simplify linking, loading, dynamic memory
allocation, and inter-process sharing?
- How can the virtual memory mechanism be used to provide memory
protection? (What implications does this have for the content of the
page table?)
- In general, what information is required to translate from
virtual to physical addresses? (What must the hardware have access to
in order to do mapping without software assistance?)
- In general, what are the advantages of physically-addressed
caches relative to virtually-addressed caches?
- TLBs
- What is a TLB?
- What role does a TLB play in speeding up address translation?
- How is a typical TLB organized?
- With what address bits is the TLB accessed and into what
fields does the TLB split the address?
- What is stored in each TLB line?
- What information is obtained from the TLB on each hit? (How
is the TLB output used in the L1 cache access?)
- What happens in the case of a TLB miss? (Must it be serviced
by hardware? By software?)
- How does TLB size and access time compare with that of L1
caches? (To what extent can the the two accesses be overlapped?)
- What is the relationship between TLB misses and page faults?
- How are multilevel page tables organized, and how do they save
space? (How are they organized in the Intel Core i7 processing
running Linux?)
- Does the multilevel nature of a page table increase the
complexity of TLB hits? (TLB misses?) If so, how?)
- In general, what kind of information is contained in page table
entries in the Intel Core i7? (How big is each entry? What is the
significance of the reference and dirty bits, for example? Is there a
valid bit?)
- What are the major regions in the kernel's virtual memory portion
of each Linux process? (What parts are identical for all processes,
and which are process specific? What kinds of things are contained in
these regions?)
- When a page fault is detected, how does the Linux exception
handler determine if the access is a legal access? (What role do the
kernel's "area" or "segment" data structures play in this? What
information is maintained in the "area" structs?)
- How is memory mapping? (How is it employed by the kernel
in implementing fork and execve calls? How can it be employed by
user-level code? When does data actually get copied?)
- What mechanisms are used to allow the heap to grow larger
during execution? (How are additional pages within the virtual memory
space allocated?)
- What are common memory-related bugs in C programs?
- Self test: Can you complete all practice problems in Chapter 10?
Updated for 2nd Edition of CS:APP