Dear Wiki user, You have subscribed to a wiki page or wiki category on "Lucy Wiki" for change notification.
The "LucyBookClub" page has been changed by MarvinHumphrey: https://wiki.apache.org/lucy/LucyBookClub?action=diff&rev1=58&rev2=59 Comment: Add June 18, archive June 11. [[mailto:[email protected]|[email protected]]] == Upcoming Meetings == + + === Tuesday June 18, 7:00 pm PDT: === + + Lectures from [[https://www.coursera.org/course/hwswinterface|The Hardware/Software Interface]] + + * Section 9: Virtual Memory + * Section 10: Memory Allocation + + Review questions for section 9, "Virtual Memory": + + 1. What four problems do the professors suggest that virtual memory solves? + 1. "Any problem in computer science can be solved by..." what? + 1. Without indirection, what happens if you need to update data which exists at multiple memory locations? + 1. What are some non-computer-science examples of indirection? + 1. What aren't there any machines which are capable of mapping a full 64-bit address space in physical memory? + 1. What are some systems which use direct physical addressing? + 1. What are the three states for virtual memory pages? + 1. Roughly how large is a virtual memory page? + 1. Why not use write-through with virtual memory? + 1. What's in a page table entry? + 1. How many page tables per process? + 1. How much of the MMU is implemented with hardware? + 1. What's _thrashing_? + 1. What permission bits are contained in typical page table entries? + 1. Explain the sequence of events during a page hit. + 1. What impact does address space size have on page table size? + 1. How is responsibility divided between hardware and OS for implementing virtual memory? + + Review questions for section 10, "Memory Allocation": + + 1. How does the heap grow? + 1. What alignment guarantees does malloc make? + 1. What are the two conflicting performance goals of memory allocators? + 1. There are two kinds of fragmentation: internal and external. Internal and external to what? How do they differ? + 1. Briefly describe four approaches to managing a memory heap: _implicit free list_, _explicit free list_, _segregated free list_, and _blocks sorted by size_. + 1. What are the differences between _first fit_, _next fit_ and _best fit_? + 1. What is _splitting_? + 1. What is _coalescing_? + 1. When memory is nearly full, which is faster: implicit or explicit free list? + 1. For a segregated free list allocator, how closely does memory utilization approach best fit? + + Bonus questions not answered by lecture: + + 1. If heap memory were executable, how might a double free() lead to a an exploit resulting in arbitrary code execution? Hint: it's like a stack buffer overflow, but much harder for the attacker. + 1. Why does Professor Ceze keep saying "Simple, right?" for stuff that isn't simple? + + + + == Community Notes == + + Below are an excerpt of notes from previous meetings and or anything of interest related to the meetings. === Tuesday June 11, 7:00 pm PDT: === @@ -50, +101 @@ 2. How expensive is fork()? 3. Why use fork/execve instead of posix_spawn? How about vfork/execve as an alternative? - - == Community Notes == - - Below are an excerpt of notes from previous meetings and or anything of interest related to the meetings. === Tuesday June 4, 7:00 pm PDT: ===
