All lecture notes up to Lecture 10 Chapters 1, 2, 3, and 5 in the textbook Introduction (Chapter 1, lecture 1): Concepts: Where does the OS fit in? difference between hardware interface and OS interface typical OS functions kernel mode/user mode resources managed by OS Concurrency, processes, and system calls (Chapters 2.1, 2.2, 2.3, 2,4, lecture 2) Concepts: concurrency, issues related to concurrency, process, process context, system call OS interfaces (Lectures 3, 4, 5, 6, 7) system calls process management: fork(), exit(), execv(), wait() file and I/O operation: open(), create(), dup(), read(), write(), lseek(), stat() Inter-process communication: pipe() Signal handling: signal(), sigprocmask(), sigaction() Concepts and techniques: I/O redirection, catching signal, blocking signal, Process management (Lecture 8, Chapters 3.1, 3.2, 3.3) concepts and techniques: process, process context, process control block, context switching, dispatching loop, mechanism for the OS to regain control, information to be saved to maintain context, process state transition CPU scheduling (Lecture 9, Chapters 5.1, 5.2, 5.3, 5.6, 5.7, 5.8) concepts and techniques: the cases when CPU scheduling happens job queue/ready queue/device queue Performance metrics: CPU utilization, throughput, turnaround time, wait time, response time, fairness Deterministic modeling for analyzing a CPU scheduling algorithm preemptive and non-preemptive Scheduling policies, their strengths and weaknesses: FIFO, Round Robin, SJF, priority scheduling, multilevel feedback queues, lottery scheduling Genesis: from raw hardware to processes (Lecture 10, Chapter 2.11) concepts: OS booting sequence ----------------------------------------------------------------------- concepts and techniques: define the concepts (What), explain how each technique works (How), apply techniques to new situations (e.g. use deterministic modeling for analyzing new policies). OS interface: Need to know all the tricks you use in your make project, such as I/O redirection and pipe. ------------------------------------------------------------------------- Question types: 1. True/False (40) 2. definition and short explanation (10) 3. Longer questions (testing your understanding of various concepts and/or techniques) (20) 4. OS interface programming (project 1 related) (30)