Monday | Tuesday | Wednesday | Thursday | Friday |
Dec 30 | Dec 31 | Jan 1 | Jan 2 Introduction to UNIX System Calls PREP: Read The Evolution of the Unix Time-Sharing System. SG: chapter 1 OUT: Lab 1: Initializing PC Hardware
| Jan 3 Introduction to UNIX System Calls (2) PREP: Read xv6 chapter 0, pipe man page, Interrupted Primitives.
|
Jan 6
| Jan 7 Other OS Abstractions: Threads, Address Spaces, Filesystem, Devices (illustrations) PREP: do homework.
| Jan 8
| Jan 9 PC Architecture (slides) PREP: read IA-32 guide
| Jan 10 x86 Instruction Set, GCC Calling Conventions
|
Jan 13
| Jan 14 Physical Memory Map, I/O, Segmentation [lecture held on Wed 15/01]
| Jan 15
| Jan 16 Segmentation, Trap Handling PREP: do homework>
| Jan 17 Traps, Trap Handlers
|
Jan 20
| Jan 21 Kernel data structures, Memory Management
| Jan 22
| Jan 23 Segmentation Review, Paging Intro (diagrams) PREP: read xv6 chapter 2, optionally read 80386 chapter 3, do homework (l10-hw3-pointers.c)
| Jan 24 Paging (MMU)
|
Jan 27
| Jan 28 Process Address Spaces using Paging PREP: Read xv6 chapter 1, Process Anatomy; SG: 3.1-3.3
| Jan 29
| Jan 30 TLBs, Large Pages, Boot sector
| Jan 31 Loading the kernel, Initializing the page table
|
Feb 3
| Feb 4 Setting up page tables for user processes DUE: Lab 1
| Feb 5
| Feb 6 Minor Test 1
| Feb 7 Minor Test 1
|
Feb 10
| Feb 11 Processes in Action OUT: Lab 2: Implementing User Processes
| Feb 12
| Feb 13 Process Structure, Switching
| Feb 14 Process kstack, scheduler, fork, context-switch, PCB, trap entry and return PREP: Read xv6 chapter 1, do homework
|
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
| Feb 20 Handling User Pointers, Concurrency (x86 IDT details) PREP: Read xv6 chapter 3, do homework
| Feb 21 Midterm Presentations
|
Feb 24
| Feb 25 Locking PREP: Read xv6 chapter 4 with spinlock.c and skim mp.c Recursive vs. Non-Recursive Locks
| Feb 26
| Feb 27 Mid-sem break
| Feb 28 Mid-sem break
|
Mar 3
| Mar 4 Mid-sem break
| Mar 5
| Mar 6 Mid-sem break
| Mar 7 Mid-sem break DUE: Lab 2
|
Mar 10
| Mar 11 No lecture
| Mar 12
| Mar 13 Fine-grained locking and its challenges
| Mar 14 Locking variations
|
Mar 17
| Mar 18 Condition variables
| Mar 19
| Mar 20 Multiple producer, multiple consumer queue; semaphores; monitors
| Mar 21 Transactions (lock-free primitives), read-write locks
|
Mar 24
| Mar 25 Minor Test 2
| Mar 26
| Mar 27 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 28 More synchronization in xv6: kill, IDE device driver; demand paging
|
Mar 31
| Apr 1 Demand paging and replacement (slides) [lecture held on Sat 29/03] SG: chapter 9
| Apr 2
| Apr 3 Page Replacement, Thrashing (slides) [lecture held on Mon 01/04] PREP: do homework
| Apr 4 Storage devices, Filesystem interfaces [lecture held on Thu 03/04]
|
Apr 7
| Apr 8 Filesystem Implementation [lecture held on Fri 04/04] PREP: xv6 book chapter 6 and chapter 7 SG: chapters 12, 13
| Apr 9
| Apr 10 Voting day
| Apr 11 Filesystem Operations
PREP: do homework
|
Apr 14
| Apr 15 Crash Recovery and Logging
| Apr 16
| Apr 17 Logging in ext3 PREP: Read Journaling the Linux ext2fs Filesystem
| Apr 18 Good Friday
|
Apr 21
| Apr 22 Protection and Security
| Apr 23
| Apr 24 Scheduling Policies
| Apr 25 Multi-processor coordination: lock free PREP: optionally read Read-Copy-Update, Address Space Using RCU Trees
|
Apr 28
| Apr 29 Microkernels, Exokernels, Multikernels
| Apr 30
| May 1 Virtualization, Cloud Computing, Technology trends
| May 2
|