This is a static page that lists all courseware - lecture topics and slides. Details of a specific run of the course (eg. evaluation pattern and assignments) are in Moodle or Google Classroom.

Please drop me a line in case you find a missing or broken link.

Pre-requisites


This is a core course taught to a third year undergraduate class. It is expected that students are familiar with Computer Organisation and Computer Architecture.

Reference material



Courseware


Contents Lecture Slides Additional Slides
Logistics Lecture -
History of OS Lecture Linux vs Unix | Supporting multi-cores
What is an OS Lecture Unikernels | TinyElfs | Leaky Abstraction
Code Overview - xv6 Lecture -
Process - API Lecture POSIX
Process - Mechanism Lecture Using ptrace()
Inter-process Communication Lecture -
Scheduling Lecture Lottery Scheduling | Segmented FIFO
Scheduling - Mechanism Lecture Priority Inversion in Path Finder | Sloppy Counters
Virtual Memory Lecture Dirty COW | Spotting memory errors
Paging Lecture Huge pages | Unified page cache | Clock algorithm in Multics
TLB Lecture -
Virtual Memory - Advanced Lecture Software isolation | Meltdown
Threads Lecture OpenMP
Synchronization Lecture CVs with Semaphores | Chandy Misra solution
Synchronization Bugs Lecture Concurrency Bugs
System Calls in xv6 Lecture -
Files Lecture Linux File Systems | Memory mapped file |
File Systems - Mechanism Lecture Mounting | Raw Hex | ZFS
File System in xv6 Lecture -
Disk and IO Lecture Device drivers | Error correction in HDDs