COL331 / COL633 : Operating Systems : Schedule

Sem II, 2019-20

Links to notes etc. on future days are tentative only. They are here only to give you an idea what the future will bring.
SG refers to the book by Silberschatz and Galvin
MondayTuesdayWednesdayThursdayFriday
Dec 30Dec 31
Introduction to UNIX System Calls (slides)
PREP: Read The Evolution of the Unix Time-Sharing System.
SG: chapter 1
Jan 1
Introduction to UNIX System Calls (2) (slides)
PREP: Read xv6 chapter 0, pipe man page, Interrupted Primitives.
Jan 2
Jan 3
Other OS Abstractions: Threads, Address Spaces, Filesystem, Devices (illustrations)
Jan 6
Jan 7
PC Architecture (slides)
PREP: read IA-32 guide.
Jan 8
x86 Instruction Set, GCC Calling Conventions
Jan 9
Jan 10
Physical Memory Map, I/O, Segmentation
Jan 13
Jan 14
Segmentation, Trap Handling
Jan 15
Makar Sakranti
Jan 16
Jan 17
Traps, Trap Handlers
OUT: Lab 1: Shell (1.1-1.4)
Jan 20
Jan 21
Kernel data structures, Memory Management
PREP: do homework
Jan 22
Segmentation Review, Paging Intro (diagrams)
PREP: read xv6 chapter 2, optionally read 80386 chapter 3
Jan 23
Jan 24
Paging (MMU)
DUE: Lab 1
Jan 27
Jan 28
Process Address Spaces using Paging
PREP: Read xv6 chapter 1, Process Anatomy
SG: 3.1-3.3
Jan 29
TLBs, Large Pages, Boot sector
Jan 30
Jan 31
Loading the kernel, Initializing the page table
Feb 3
Feb 4
Minor 1
Feb 5
Minor 1
Feb 6
Feb 7
Setting up page tables for user processes
Feb 10
Feb 11
Processes in Action
PREP: do homework (hw2-pointers.c)
Feb 12
Process Structure, Switching
Feb 13
Feb 14
Process kstack, scheduler, fork, context-switch, PCB, trap entry and return
PREP: Read xv6 chapter 1
Feb 17
Feb 18
Creating the first process
PREP: Read xv6 chapter 5 through section "Code: Scheduling" with proc.c, setjmp.S, and sys_fork (in sysproc.c)
SG: chapter 5
Feb 19
Handling User Pointers, Concurrency (x86 IDT details)
PREP: Read xv6 chapter 3
Feb 20
Feb 21
Locking
PREP: Read xv6 chapter 4 with spinlock.c and skim mp.c
Recursive vs. Non-Recursive Locks
OUT: Lab 2: Threads (2.1-2.4)
Feb 24
Feb 25
Fine-grained locking and its challenges
Feb 26
Locking variations
Feb 27
Feb 28
Condition variables
Mar 2
Mar 3
Multiple producer, multiple consumer queue; semaphores; monitors
Mar 4
Transactions (lock-free primitives), read-write locks
Mar 5
Mar 6
Synchronization in xv6: acquire/release, sleep/wakeup, exit/wait
PREP: Read rest of xv6 chapter 5; read remainder of proc.c and sys_wait, sys_exit, sys_kill.
SG: chapters 6, 7
DUE: Lab 2
Mar 9
Mar 10
Holi
Mar 11
More synchronization in xv6: kill, IDE device driver; demand paging
Mar 12
Mar 13
Demand paging and replacement (slides)

SG: chapter 9
Mar 16
Mar 17
Minor 2
Mar 18
Minor 2
Mar 19
Mar 20
Page Replacement, Thrashing (slides)

Mar 23
Mar 24
Storage devices, Filesystem interfaces

PREP: do homework
Mar 25
Filesystem Implementation

PREP: xv6 book chapter 6 and chapter 7
SG: chapters 12, 13
Mar 26
Mar 27
Filesystem Operations

OUT: Lab 3: Concurrency (3.1)
Mar 30
Mar 31
Crash Recovery and Logging
Apr 1
Logging in ext3
PREP: Read Journaling the Linux ext2fs Filesystem
Apr 2
Apr 3
Protection and Security
Apr 6
Apr 7
Scheduling Policies
Apr 8
Multi-processor coordination: lock free
PREP: optionally read Read-Copy-Update, Address Space Using RCU Trees
Apr 9
Apr 10
Good Friday
Apr 13
Apr 14
Microkernels, Exokernels, Multikernels
Apr 15
Virtualization, Cloud Computing, Technology trends
Apr 16
Apr 17
HW4
PREP: do homework
DUE: Lab 3
Apr 20
Apr 21
Apr 22
Apr 23
Apr 24