Monday | Tuesday | Wednesday | Thursday | Friday |
Jan 2 | Jan 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
|