Future lecture/discussion material is subject to change.

Date Topic Reading
1/15 1. Class overview and big picture: Lecture1 CN
1/16 Overview of MPs and Environment: Slides MP0
1/17 2. x86 instruction set architecture: introduction and instructions: Lecture2 CN
1/22 3. x86 isa: assembler conventions, calling convention, examples: Lecture3 CN
1/23 PS1, x86: Slides PS1
1/24 4. C to x86 linkage, device I/O; role of system software, system calls: Lecture4 CN, (ULK1)
1/29 5. Interrupts and exceptions, processor and ISA support: Lecture5 CN, (ULK4)
1/30 MP1, x86, calling convention: Slides MP1
1/31 6. Shared resources, critical sections, examples: Lecture6 CN, (ULK5)
2/5 7. Multiprocessors and locks, conservative synchronization design: Lecture7 CN, (ULK5)
2/6 PS2, Synchronization: Slides PS2
2/7 8. Linux synchronization interface, synchronization hazards: Lecture8 CN
2/12 9. Programmable interrupt controller, motivation, design: Lecture9 CN
2/13 MP2.1, Synchronization: Slides MP2
2/14 10. Linux abstraction of PIC; Introduction to Interrupt support in Linux: Lecture10 CN, (ULK 4)
2/20 Post-exam discussion; MP2.1 and 2.2: Slides MP2
2/21 12. Interrupt support in Linux: data structures, initialization and assembly linkage: Lecture12 CN, (ULK4)
2/26 13. Interrupt support in Linux: invocation; summary of the interrupt support: Lecture13 CN, (ULK4)
2/27 MP2.2, Tux Synchronization: Slides MP2
2/28 14. Soft interrupts/tasklets; Virtual memory: rationale, segmentation: Lecture14 CN, (ULK2, LDD13)
3/5 15. Virtual memory: paging; First meeting of MP3 groups: Lecture15 CN, (ULK2)
3/6 MP3 overview, MP3.1: Slides MP3
3/7 16. Filesystem: philosophy, ext2 as example (file system in MP3): Lecture16  ULK12&18, MP3
3/12 17. Programs to processes: rationale, terminology, and structures (task structure, kernel stack, TSS): Lecture17  ULK3&7
3/13 MP3.2: Slides MP3
3/14 18. Programs to processes: creating processes; job types and basics of scheduling; scheduler design and implementation Lecture18  ULK7
Spring Break
3/26 19. System call linkage Lecture19  CN, (ULK10)
3/27 Exam Review; MP3.3: Slides  
3/28 20. Memory allocation Lecture22  ULK8
4/02 21. EXAM2 Review  
4/03 MP3.3: Slides MP3
4/09 23. Memory management data structures- process address space: Lecture23  ULK9
4/10 MP3.4, system calls: Slides MP3
4/11 24. Signals: user-level analogue of interrupts, controlling behavior: Lecture24  CN
4/16 25. Abstracting devices: block and character devices; device drivers: Lecture25 LDD1&3, (ULK13)
4/17 MP3.5 Scheduling: Slides MP3
4/18 26. Driver development process and detailed example: Lecture26 CN6a
4/23 27. Detailed example of driver development, continued: Lecture27  CN6a
4/24 MP3.5: Slides MP3
4/25 28. Review Session for the Final Exam  
4/30 No lecture, MP3 demos  
5/7 FINAL EXAM: May 07 (Tuesday); 1:30pm - 4:30pm  
Course Notes Set #
Understanding the Linux Kernel (Bovet & Cesati), Chapter #
Advanced UNIX Programming (Rochkind)
Linux Device Drivers (Corbet, Rubini, Kroah-Hartman)