Monday | Tuesday | Wednesday | Thursday | Friday |
Dec 30 | Dec 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
|