Cumulative Review
This review mixes foundation material from earlier semesters with the operating-systems and networking work from Semester 5. Answer from memory first. Write short, precise answers. If a question asks for a diagram, draw it.
Target time: 2 sessions of 60-90 minutes.
How To Score Yourself
Solid: correct, specific, and explained without notesPartial: roughly correct but missing a key mechanism, tradeoff, or exampleWeak: mostly guessed, vague, or dependent on notes
If you score Weak on 6 or more questions, do another review pass before the exam.
Questions
Foundations and Earlier Semesters
- Explain the difference between an invariant, a precondition, and a postcondition, then give one example from systems code.
- Why does asymptotic complexity still matter in systems work where constants are large and hardware details matter?
- Compare stack and heap allocation in terms of lifetime, performance characteristics, and failure modes.
- Walk through what happens from a C source file to an executable at a high level: preprocessing, compilation, assembly, linking.
- Why do pointers make aliasing and mutation reasoning harder in low-level code?
- Give one example where a data structure choice changes system behavior, not just algorithm elegance.
Module 1: Processes and Scheduling
- Define process, thread, and context switch in operational terms.
- Given one CPU and three jobs with different burst times, explain why SJF minimizes average turnaround time.
- Compare response time, turnaround time, throughput, and fairness. Which pairs often conflict?
- Explain how round-robin trades responsiveness against overhead.
- Describe MLFQ in plain language and say what problem it is trying to solve.
- Explain why context switches cost more than saving a few registers.
- What changes when scheduling moves from one core to many cores?
Module 2: Memory Management and Virtual Memory
- Why does virtual memory exist? Name at least three things it buys the system.
- Split a virtual address into page number and offset for a 4 KiB page system and explain what each part is used for.
- Distinguish TLB hit, TLB miss, minor page fault, and major page fault.
- Why is OPT useful but not implementable as a real replacement policy?
- Explain thrashing and why working-set reasoning matters.
- Compare buddy allocation, slab allocation, and user-space allocators such as
jemalloc. - Explain copy-on-write and why it makes
forkpractical.
Module 3: Concurrency and Synchronization
- Why is
counter++not atomic? Write the steps that make it unsafe across threads. - Define mutual exclusion, progress, and bounded waiting. Why is only one of them insufficient?
- Compare spinlocks and blocking mutexes. When is each the wrong choice?
- Why must a condition-variable wait recheck its predicate in a
whileloop? - Compare semaphores, mutexes, and monitors by typical use case.
- Name the Coffman deadlock conditions and explain one way to break each.
- Explain why lock-free does not automatically mean faster.
Module 4: File Systems and I/O
- Distinguish file name, inode, file descriptor, and open-file table entry.
- Draw or describe a typical ext-style on-disk layout.
- Explain the crash-consistency problem with a small append or rename example.
- Compare journaling and copy-on-write file systems as two different recovery strategies.
- What does
fsyncguarantee, and what does it not guarantee? - Why is sequential I/O usually much faster than random I/O?
- Compare
select,poll,epoll, andio_uringat a decision level.
Module 5: Network Protocols and Sockets
- For one HTTPS request, describe the roles of DNS name, IP address, MAC address, TCP port, TLS, and HTTP.
- Compare UDP and TCP using guarantees, costs, and common use cases.
- Distinguish TCP flow control from congestion control.
- Walk through the TCP three-way handshake and explain the purpose of
TIME_WAIT. - Explain CIDR and longest-prefix match using one example subnet.
- Compare HTTP/1.1, HTTP/2, and HTTP/3 at a high level.
- What does TLS 1.3 establish, and what role does the certificate chain play?
- Compare iterative, threaded, forking, and event-driven server architectures.
- Name the first three tools you would use to debug "the service is up, but requests hang," and say what each tells you.
Final Synthesis Prompts
Answer these in full sentences. These are the questions that matter most for next semester.
- How do caching and buffering show up in all five modules of this semester?
- Where do fairness tradeoffs appear in scheduling, locks, disk/service I/O, and network traffic?
- Explain one end-to-end request path from client to server process, through memory, synchronization, file I/O, and back onto the network.
- Pick one measurement you ran this semester and explain how it changed your mental model.
- Which semester skill is still weakest: scheduling, memory, concurrency, persistence, or networking? What is your repair plan before Semester 6?
Review Standard
You are ready for the exam when:
- you can answer most questions without reaching for terminology alone
- your answers include mechanism, tradeoff, and at least one concrete example
- you can connect modules instead of treating them as isolated topics
- your weak spots are narrow, not structural