Logistics
The exam will be just like the other two (possibly a little longer, with extra time given) and in the same classroom as our lecture, but at the final time listed here:
The exam is CLOSED note and CLOSED computer.
You are allowed to bring ONE 8.5" x 11" (double sided, printed is fine) cheat sheet with any information you'd like with you for consultation into the exam.
The exam may feel long, but that's OK! Take your time, a deep breath or two, and don't worry if you don't finish everything -- it will be likely that your classmates do not either, which will likely be by design.
Topics
Exam III will cover conceptual topics since the last exam. These include:
Synchronization: bounded buffer problem, race conditions, critical sections (including components: entry, critical, exit, and remainder sections), qualities of solutions to critical section problem, locks, semaphores and their implementations, POSIX semaphores and their use.
Deadlock: characterization, prevention, avoidance, system resource model, resource allocation graphs (RAGs), RAG deadlock avoidance algorithm.
Contiguous Memory Allocation: process memory organization in multiprogramming environment, protection, backing-stores, swapping, address binding, physical vs. logical perspectives of memory, contiguous memory allocation (semantics, holes, fragmentation, fit algorithms, and shortcomings).
Paging: semantics, page table, page table logical to physical address translation, paging protection and sharing, virtual memory, demand paging, pages and page faults, page-table record keeping (valid-invalid and dirty bits), demand paging optimization (copy-on-write), page replacement, page replacement algorithms: FIFO, OPT, LRU.
Question Types
The examination format may include:
Definitions and short answer questions
Multiple choice
Problems similar to the past classworks
Some code analysis in C + POSIX libraries
Be prepared to answer some questions similar to those on the assignments and in-class exercises.
Furthermore, although I won't ask you anything about mechanics we haven't covered in class, you might be expected to apply the mechanics we've learned about in a way that we didn't see in class. If you thoroughly understand the material, there should be no surprises, but still challenges.
Preparation
Here is my general suggestion for preparation order:
Re-read my course notes, re-doing the exercises if you aren't clear on any of them. Importantly: try to answer each "question" box yourself before revealing its answer.
Read the relevant textbook chapters outlined in the Syllabus.
Study any available classwork and homework solutions.
Run / tinker with sample code from lectures.