First section: Time Management
- Event-driven programming [1 lecture]
- DOS-style polling loop
- Mac/X (or other GUI) event loop
- Win32 wndProc
- Processes (Ch. 3) [1 lecture]
- Semantics: multiprogramming, blocking
- Creation: UNIX fork, Win32 CreateProcess
- Hardware Implementation (Ch. 3.1) [1 week]
- Resources: Stack, registers, heap, etc.
- Protected (privileged, supervisor, "ring 0") mode kernel
&
security
- System calls, timers, and other hardware interfaces
- Signals & interrupts (Ch. 4.4.3 & 13.2.2) [1 week +
1 homework]
- Hardware interrupts
- UNIX/Win32 signals & signal handlers
- Interrupt safety (reentrancy): enable/disable interrupts
- Threads (Ch. 4) [1 week]
- Kernel-level: pthreads, win32
- User-level: coroutines & implementation
- Concurrent Interaction (Ch. 6 & 7) [2 weeks + 1
homework]
- Motivation: Race conditions & other horrors.
- Locks (pthread lock, win32 mutex), semaphores (win32)
- Deadlock: prevention (lock ordering)
- Waiting: UNIX select vs. Win32 WaitForMultipleObjects
- Not covered: deadlock detection & response
- CPU Scheduling (Ch. 5) [1 week]
- Starvation, poor utilization
- Prioritization
- Priority Inversion
- Job scheduling: Shortest-Job-First, etc.
Second Section: Space Management
- Memory allocation (Ch. 8.3.2) [1 week + 1 homework]
- Memory heirarchy & cost-capacity-speed tradeoff
- Low-level memory allocation: sbrk
- Mid-level memory allocation: malloc (first-fit, best-fit,
etc)
- Virtual memory: uses (Ch. 9) [1 week]
- DLL/text page sharing, copy-on-write
- Memory-mapped files: UNIX mmap, mprotect, SYSV IPC; Win32
MapViewOfFile (Ch. 9.7)
- Software distributed shared memory
- Virtual memory: implementation (Ch. 8, 9.4) [1 week]
- Page table and TLB (presence, permissions, and dirty bits)
- Demand paging & page replacement strategies
- Filesystem (Ch. 10 & 11) [1 week]
- Layouts: File Allocation Table (FAT), inode, b-tree
- Caching, fragmentation, corruption during crash
- Not covered: disk head scheduling (elevator algorithm,
etc.)
- Accounting and security [2 weeks]
- Terminology: Tampering and authentication, logging,
secrecy and encryption
- Common security holes: buffer overflow, unquoted inputs,
excess priviledge
|
Calendar |
Monday |
Wednesday |
Friday |
January |
|
|
21 First day
of class
|
Events, Processes, Hardware
|
24
|
26 HW0 Due
|
28
Add Deadline
|
Signals, Interrupts
|
31
|
|
|
|
|
|
|
February
|
|
2 PROJECT1
Topic Due
|
4
Drop Deadline
|
Threads
|
7
|
9 HW1 Due |
11
|
Concurrency 1
|
14
|
16 PROJECT1
Design Due
|
18
|
Concurrency 2
|
21
|
23 |
25
|
CPU Scheduling |
28
|
|
|
|
|
|
|
March |
|
2 HW2 Due |
4
|
Review and Midterm
|
7
|
9 MIDTERM
|
11
|
Spring Break
|
14 (BREAK)
|
16 (BREAK)
|
18 (BREAK)
|
Memory Allocation
|
21 Last day
to Withdraw
|
23 PROJECT1 Code Due
|
25
|
VM Usage |
28
|
30 PROJECT2 Topic Due |
|
|
|
|
|
April |
|
|
1
|
VM Implementation |
4
|
6 HW3 Due
|
8
|
File System |
11
|
13
|
15
|
Security |
18
|
20 PROJECT2
Design Due
|
22
|
Accounting |
25
|
27 HW4 Due
|
29 (BREAK)
Springfest
|
|
|
|
|
May |
|
|
|
Semester Project Demos
|
2 PROJECT
Demos
|
4 PROJECT
Demos, PROJECT2 Code Due
|
6 Review for
final exam
|
Finals Week
|
9 FINAL
at 10:15AM
|
|
|
|