COL331 / COL633 : Operating Systems : Schedule

Sem II, 2016-17

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
Jan 2Jan 3
Introduction to UNIX System Calls
PREP: Read The Evolution of the Unix Time-Sharing System.
SG: chapter 1
Jan 4
Introduction to UNIX System Calls (2)
PREP: Read xv6 chapter 0, pipe man page, Interrupted Primitives.
Jan 5
Jan 6
Other OS Abstractions: Threads, Address Spaces, Filesystem, Devices (illustrations)
Jan 9
Jan 10
PC Architecture (slides)
PREP: read IA-32 guide.
Jan 11
x86 Instruction Set, GCC Calling Conventions
Jan 12
Jan 13
Physical Memory Map, I/O, Segmentation
Jan 16
Jan 17
Segmentation, Trap Handling
OUT: Lab 1: Shell (1.1-1.4)
Jan 18
Traps, Trap Handlers
Jan 19
Jan 20
Kernel data structures, Memory Management
PREP: do homework
Jan 23
Jan 24
Segmentation Review, Paging Intro (diagrams)
PREP: read xv6 chapter 2, optionally read 80386 chapter 3
DUE: Lab 1
Jan 25
Paging (MMU)
Jan 26
Jan 27
Process Address Spaces using Paging
PREP: Read xv6 chapter 1, Process Anatomy
SG: 3.1-3.3
Jan 30
Jan 31
Minor 1
Feb 1
Minor 1
Feb 2
Feb 3
Minor 1
Feb 6
Feb 7
TLBs, Large Pages, Boot sector
Feb 8
Loading the kernel, Initializing the page table
Feb 9
Feb 10
Setting up page tables for user processes
Feb 13
Feb 14
Processes in Action
PREP: do homework (hw2-pointers.c)
Feb 15
Process Structure, Switching
Feb 16
Feb 17
Process kstack, scheduler, fork, context-switch, PCB, trap entry and return
PREP: Read xv6 chapter 1
Feb 20
Feb 21
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
OUT: Lab 2: Threads (2.1-2.4)
Feb 22
Handling User Pointers, Concurrency (x86 IDT details)
PREP: Read xv6 chapter 3
Feb 23
Feb 24
Maha Shivaratri
Feb 27
Feb 28
Locking
PREP: Read xv6 chapter 4 with spinlock.c and skim mp.c
Recursive vs. Non-Recursive Locks
Mar 1
Fine-grained locking and its challenges
Mar 2
Mar 3
Locking variations
Mar 6
Mar 7
Condition variables
DUE: Lab 2
Mar 8
Multiple producer, multiple consumer queue; semaphores; monitors
Mar 9
Mar 10
Transactions (lock-free primitives), read-write locks
Mar 13
Mar 14
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
Mar 15
More synchronization in xv6: kill, IDE device driver; demand paging
Mar 16
Mar 17
Demand paging and replacement (slides)

SG: chapter 9
Mar 20
Mar 21
Page Replacement, Thrashing (slides)

Mar 22
Minor 2
Mar 23
Mar 24
Minor 2
Mar 27
Mar 28
Storage devices, Filesystem interfaces

PREP: do homework
OUT: Lab 3: Concurrency (3.1)
Mar 29
Filesystem Implementation

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

Apr 3
Apr 4
Crash Recovery and Logging
Apr 5
Logging in ext3
PREP: Read Journaling the Linux ext2fs Filesystem
Apr 6
Apr 7
Protection and Security
Apr 10
Apr 11
Scheduling Policies
Apr 12
Multi-processor coordination: lock free
PREP: optionally read Read-Copy-Update, Address Space Using RCU Trees
Apr 13
Apr 14
Good Friday
Apr 17
Apr 18
Microkernels, Exokernels, Multikernels
DUE: Lab 3
Apr 19
Virtualization, Cloud Computing, Technology trends
Apr 20
Apr 21
HW4
PREP: do homework
Apr 24
Apr 25
Apr 26
Apr 27
Apr 28