CS3500: Operating Systems
Course information
When: Jul-Nov 2023
Lectures: Slot D
Lab: Slot T
Where: SSB134 for the lectures and DCF for the lab
Teaching Assistants: YSS Narasimha Naidu, Sasubilli Yuvan, Bharath Reddy, Aashay Bharatkumar Shah, Ashok Rajeev, Ayush Kumar Mall, Devmalya Roy, Hrishikesh Tiwari, Mathew Thomas, Prince Dineshbhai Patel, Susmit Jaiswal, Tulsi Ram Meena, Yash Bhatia, Tirth Vamja
Textbooks/References
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. Operating systems: Three easy pieces. Arpaci-Dusseau Books, 2018.
Course Content
Virtualizing the CPU: Chapters 4-9 of the text
Virtualizing the memory: Chapters 13-23 of the text
Concurrency: Chapters 26-32 of the text
Persistence: Chapters 36-40 of the text
Labs
The lab exercises will either be standalone implementations of OS features (e.g. scheduling, file system, etc), or changing the xv6 OS, e.g., to add new system calls, change the memory management scheme, etc. We shall be using the RISC-V version of xv6, see here.
Grading
Quiz-I and II: 10% each
Final exam: 30%
Labs: 40% split over seven assignments
Tutorials: 8% split over two
Class participation: 2%
Important Dates
Quiz-I: 31 Aug
Quiz-II: 12 Oct
Final exam: 22 Nov
Dates as per the the academic calendar
Slides
Schedule
Lecture number | Topics Covered | Chapter reference |
---|---|---|
Lecture 1 | Intro to OS: virtualizing cpu | Chapter 2 |
Lecture 2 | Intro to OS: virtualizing memory, concurrency | Chapter 2 |
Lecture 3 | Intro to OS: persistence The process abstraction | Chapters 2, 4 |
Lecture 4 | Process API: fork, exec | Chapter 5 |
Lecture 5 | Limited direct execution: Basics, restricted operations | Chapter 6 |
Lecture 6 | Limited direct execution: process switchingIntro to process scheduling | Chapters 6, 7 |
Lecture 7 | Process scheduling | Chapter 7 |
Lecture 8 | Multi-Level Feedback Queue | Chapter 8 |
Lecture 9 | Multi-Level Feedback Queue | Chapter 8 |
Lecture 10 | Introduction to shell commands | |
Lecture 11 | Proportionally fair scheduling | Chapter 9 |
Lecture 12 | Proportionally fair scheduling Discussion questions | Chapter 9 |
Tutorial 1 | ||
Lecture 13 | Introduction to memory virtualization | Chapter 13 |
Lecture 14 | Address translation | Chapter 15 |
Quiz 1 | ||
Lecture 15 | Segmentation | Chapter 16 |
Lecture 16 | Segmentation Discussion questions | Chapter 16 |
Lecture 17 | Free-space management | Chapter 17 |
Lecture 18 | Introduction to paging | Chapter 18 |
Lecture 19 | Paging: Page table entry, an example | Chapter 18 |
Lecture 20 | Translation lookaside buffers | Chapter 19 |
Lecture 21 | Advanced page tables: segmentation+paging | Chapter 20 |
Lecture 22 | Advanced page tables: multi-level page tables | Chapter 20 |
Lecture 23 | Page fault handlers | Chapter 21 |
Lecture 24 | Page replacement algorithms | Chapter 22 |
Lecture 25 | Complete VM systems: VAX/VMS | Chapter 23 |
Lecture 26 | Concurrency: Intro to threads | Chapter 26 |
Lecture 27 | Thread API | Chapter 27 |
Tutorial 2 | ||
Lecture 28 | Locks: Basic idea | Chapter 28 |
Lecture 29 | Locks: Spin locks using HW primitives | Chapter 28 |
Lecture 30 | Locks: Efficienct variants using yield and queues | Chapter 28 |
Quiz 2 | ||
Lecture 31 | Locked data structures | Chapter 29 |
Lecture 32 | Condition variables: Def, fork/join | Chapter 30 |
Lecture 33 | Condition variables: Producer/consumer problem | Chapter 30 |
Lecture 34 | Semaphores: Def, as locks and as CV | Chapter 31 |
Lecture 35 | Semaphores: Producer/consumer and dining philosophers problems | Chapter 31 |
Lecture 36 | Deadlocks: conditions, example | Chapter 32 |
Lecture 37 | Avoiding deadlocks: illustration using a vector class | Chapter 32 |
Lecture 38 | I/O devices | Chapter 36 |
Lecture 39 | Hard disk drives | Chapter 37 |
Lecture 40 | Files and directories | Chapter 39 |