Exam is Closed Book.
Concurrency: Synchronization primitives — atomic instructions, locks, condition variables, semaphores. Threads — stacks, private state, context switching, interaction with synchronization primitives. Deadlock, starvation. Logical clocks, causal order (happened-before), and races.
Performance and scheduling. Priority and inversion. Queues, FIFO vs. round-robin, saturation, admission control. Performance measures — throughput, utilization, and response time.
Protection: Kernel/user mode, processes. address spaces and segments. Kernel handling of traps, faults, and interrupts. System calls. Libraries and servers. Authorization, access control lists, capabilities, trusted code. Vulnerabilities and attacks.
Memory and storage: Virtual memory, heap management, maps and page tables, page/block caching and eviction, page fault handling. Files: I/O clustering and prefetching, read-ahead and write-behind, logging and recovery.
Networking: Sockets and servers. Network addressing: DNS names, IP addresses, ports. Stream abstraction. Authentication and encryption using keypairs: secure streams and transport-layer security.
References: Operating Systems in Three Easy Pieces (OSTEP), by Remzi and Andrea Arpaci-Dusseau.