====== Course Outline ====== The course outline is a guideline to topics that will be discussed in the course, and when they will be discussed: ===== Weeks 1 and 2 ===== **Introduction**: multiprogramming, multitasking, interrupt-driven, kernel, system calls, etc. (chapters 1,2) ===== Week 3 ===== **Process**: concept, PCB, context switch, Inter-Process Communication (IPC), Unix programming (signals, pipes, message queues). (chapter 3) ===== Week 4 ===== **Thread**: concept (vs process), thread models, multithreaded programming (Pthreads). (Chapter 4) ===== Week 5 ===== **CPU scheduling**: criteria, algorithm, implementation. (chapter 5) ===== Week 6 ===== **Process Synchronization (I)**: critical-section problem & example, bakery algorithm, Peterson’s solution. (chapter 6.1-6.3) ===== Midterm ===== ===== Week 7 ===== **Process Synchronization (II)**: hardware solution, semaphore, classic problems (B-B, R-W,_ D-P); high-level tools (monitor). (chapter 6.4-6.8) ===== Week 8 ===== **Deadlock**. (chapter 7) ===== Week 9 ===== **Memory Management (I)**: logical vs. physical memory, address binding, Contiguous memory allocation. (chapter 8.1-8.3) ===== Week 10 ===== **Memory Management (II)**: paging, segmentation, examples. (chapter 8.4-8.8) ===== Week 11 ===== **Virtual Memory**: demand paging, replacement, thrashing. (chapter 9) ===== Week 12 ===== **Protection and Security** (chapters 14 and 15)