• Links to lecture notes/slides are preliminary, and will be updated as our course progresses.
  • Lectures are more comprehensive than lecture notes/slides.
  • Lecture notes/slides are not a replacement for attending lectures.
  • CPSC 405 GitHub Repo: $ git clone https://github.com/gustycooper/xv6-labs.git


MondayTuesday WednesdayThursday Friday
aug 24

week 1
aug 25
LEC 1: Introduction, slides, and Xv6 book
Preparation: Read Xv6: Ch 2 OS Organization (for your amusement: Unix)

Assignment: Lab shell: Unix shell
aug 26 aug 27
LEC 2: C Programming, slides, and examples
Preparation: Read Introduction in Lab firstlab: C Programming, Pointers: 5.1- 5.6, and Structures: 6.1-6.4 in Kernighan & Ritchie

Assignment: Lab firstlab: C Programming
aug 28
aug 31

week 2
sep 1
LEC 3: C Programming - Xv6 API, slides, and examples
Preparation: Read Xv6: Ch 1 OS Interfaces
sep 2 sep 3
DUE at 8AM: Lab firstlab: C Programming

LEC 4: C Programming - Xv6 API, slides, and examples
Preparation: Read Bitwise Operators: 2.9, Pointers: 5.1- 5.6, and Structures: 6.1-6.4 in Kernighan & Ritchie

Assignment: Lab util: Unix utilities
sep 4
sep 7

week 3
Labor Day
sep 8
LEC 5: OS Design, slides
Preparation: Read Xv6: Ch 2 OS Organization and xv6 code: kernel/proc.h, kernel/defs.h, kernel/entry.S, kernel/main.c, user/initcode.S, user/init.c, and skim kernel/proc.c and kernel/exec.c
sep 9 sep 10
DUE at 8AM: Lab util: Unix utilities

LEC 6: RISC-V Calling conventions, slides
Preparation: Read RISC-V Calling Convention
sep 11
DROP w/o W
sep 14

week 4
sep 15
LEC 7: System Call Entry/Exit and Traps, slides, slides_extra
Preparation: Read Xv6 Ch 4 Traps, except 4.6 and kernel/riscv.h, kernel/trampoline.S, and kernel/trap.c

Assignment: Lab syscall: System calls
sep 16 sep 17
LEC 8: Virtual Addressing, slides
Preparation: Read OSTEP: Ch 15: Address Translation, Ch 16: Segmentation, and Ch 18:Intro to Paging.
sep 18
sep 21

week 5
sep 22
DUE at 8AM: Lab syscall: System calls

LEC 9: Page Tables, slides
Preparation: Read Xv6: Ch 3 Page Tables and kernel/memlayout.h, kernel/vm.c, kernel/kalloc.c, kernel/riscv.h, and kernel/exec.c
sep 23 sep 24
LEC 10: Page Faults, slides
Preparation: Read Xv6: Section 4.6 Page Faults

Assignment: Lab pgtbl: Page Tables
sep 25
sep 28

week 6
sep 29
LEC 11: Device drivers, slides
Preparation: Read Xv6: Ch 5 Interrupts and kernel/kernelvec.S, kernel/plic.c, kernel/console.c, kernel/uart.c, kernel/printf.c
sep 30 oct 1
DUE at 8AM: Lab pgtbl: Page Tables

LEC 12: Locking, slides
Preparation: Read Xv6: Ch 6 Locking with kernel/spinlock.h and kernel/spinlock.c

Assignment: Lab traps: Traps
oct 2
oct 5

week 7
oct 6
Review Material from First Half of Class
Prepare for Midterm Exam
Discuss Second Half Material
oct 7 oct 8

Midterm Exam
oct 9
oct 12
week 8
Fall Break
oct 13

Fall Break
oct 14
oct 15
Review Midterm Exam
Begin Second Half of Material
oct 16
oct 19

week 9
oct 20
DUE at 8AM: Lab traps: Traps

LEC 13: Scheduling Basics, slides
Preparation: Read OSTEP: Ch 6: Direct Execution and Ch 7: Scheduling.
oct 21 oct 22
LEC 14: Scheduling Fair, slides
Preparation: Read OSTEP: Ch 8: MLFQ and Ch 9: Lottery.
oct 23
oct 26

week 10
oct 27
LEC 15: Scheduling Details, Scheduling Coordination, code, slides
Preparation: Read Xv6: Ch 7 Scheduling at least through Section 7.6, and kernel/proc.c, kernel/swtch.S, kernel/sleeplock.c

Assignment: Lab scheduling: Scheduling
oct 28 oct 29
LEC 16: File systems, slides
Preparation: Read Xv6: Ch 8 File system (except for logging sections) and kernel/bio.c, kernel/fs.c, kernel/sysfile.c, kernel/file.c
oct 30
DROP w/o F
nov 2

week 11
nov 3
DUE at 8AM: Lab scheduling: Scheduling

LEC 17: Crash recovery, slides
Preparation: Read Xv6: Ch 8 logging sections and kernel/log.c
nov 4 nov 5
LEC 18: File system performance and fast crash recovery
Preparation: Read Journaling the Linux ext2fs Filesystem (1998)

Assignment: Lab fs: File Systems
nov 6
nov 9

week 12
nov 10
LEC 19: Concurrency - Threads Intro, slides
Preparation: Read OSTEP: Ch 26: Concurrency Intro and Ch 27: Threads API.
nov 11 nov 12
DUE at 8AM: Lab fs: File Systems

LEC 20: Concurrency - Locks, slides
Preparation: Read OSTEP: Ch 28: Locks
nov 13
nov 16

week 13
nov 17
LEC 21: Concurrency - Condition Variables, Semaphores, slides
Preparation: Read OSTEP: Ch 30: Condition Variables
Ch 31: Semaphores.

Assignment: Lab thread: Multithreading
nov 18 nov 19
Special Lab Day - Security Lab.
Preparation: Read and answer the questions in Lab Security.
Mandatory Class Attendance!

Assignment: Lab security: Security
nov 20
nov 23

week 14
nov 24
Special Lecture Topic Day - Bitcoin and Blockchains, slides
nov 25 nov 26

Thanksgiving Break
nov 27

Thanksgiving Break
nov 30

week 15
dec 1
DUE at 8AM: Lab thread: Multithreading

Review Material from Entire Class
Prepare for Final Exam
dec 2 dec 3
DUE at 8AM: Lab shell: Unix shell

Free Day - Ask questions about Final Exam as needed
dec 4
All Labs Must Be Submitted by 5PM Today!
dec 7

week 16 - Exams
dec 8

Final Exam: 8:30-11
dec 9

Exam Week
dec 10

Exam Week
dec 11

Exam Week


Questions or comments regarding CPSC 405? Send e-mail to Gusty at ecooper@umw.edu.

Creative Commons License Top // CPSC 405 home // Last updated 8-Aug-2024 13:30 EST