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


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


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.


  • 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


Process management Memory management Concurrency Persistence
Introduction Introduction Introduction I/O devices
Processes Segmentation Locks Hard disk drives
Process API Free space management Semaphores Files and directories
Limited direct execution Paging
Process scheduling Translation lookaside buffers
Multi-level feedback queue Advanced page tables
Proportionally fair scheduling Page fault handling


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 switching
Intro 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