Weekly Syllabus

Week
(Date)

Topic

Reading

Notes*

Week 1
(1/20)
Introduction -- course overview, refresher on OS basics (OS structure: monoliths, microkernels, virtual machines, syscalls, kernel services, etc)

Quest-V SDKPart 1 -- Overview of the Quest RTOS and Quest-V partitioning hypervisor





Week 2
(1/27)
Quest-V SDK Part 2 -- including assignment discussion

Walkthrough of markdown documents, code examples, toolchain, example demos
  • See markdown documents




Week 3
(2/3)
System structure -- monoliths, microkernels, virtual machines

Virtualization -- VT-x basics, including VMCS details




Week 4
(2/10)
Virtualization -- guest address translation: shadow page tables/EPTs

Virtualization -- Quest-V control flow





Week 5 (2/17)
Substitute Monday Schedule for Presidents' Day Holiday
  • No Tuesday lecture
  • Primer assignment demos

x86 Architecture -- ISA, inline assembly, 32- vs 64-bit, switching into 64-bit mode, 2- vs 4/5-level paging




Week 6 (2/24)
No class -- Snow Closure



Quest walkthrough Part 1 - features, code structure, bootstrapping, memory layout, address spaces, code wakthrough (for, exec, exit)




Week 7 (3/3)
Quest walkthrough Part 2 - threads, interrupts, syscalls, user-kernel control flow


Quest walkthrough Part 3 - per-CPU data structures, modules, driver subsystem, serial debugging,...




Week 8 (3/10)
Spring Recess



Spring Recess






Week 9 (3/17)
Symmetric multiprocessing -- initialization (INIT/SIPI/SIPI, etc), synchronization basics (semaphores, spinlocks)
  • Quest-V system development assignment demos
  • Team project proposals due
  • SMP notes

Batched Priority Locking (BPL) -- explanation and comparison with alternative approaches
  • Shriram Raja presentation
  • Notes on BPL




Week 10 (3/24)
Scheduling -- Quest VCPU design, sporadic servers, theory vs code walkthrough

Scheduling -- Linux SCHED_DEADLINE, CBS, PREEMPT-RT concepts




Week 11 (3/31)
Memory Management -- TLSF, Pow2 memory allocator, Quest code walkthough of memory management
  • Notes on memory management

Input/Output -- IDT, device enumeration, PCI configuration space, LAPIC/IOAPIC, MSI
  • Team presentation 2
  • Notes on IO




Week 12
(4/7)
USB Parts 1  & 2 -- (1) Overview of USB concepts (focus on xHCI, (2) Communication, xDBC, xDCI
  • Notes on USB
  • Anton Njavro presentation

No class -- PI Meeting





Week 13 (4/14)
Power Management -- ACPI (power states and table structures), ACPICA documentation
  • See documentation on ACPI and ACPICA
  • Team presentation 3
  • Notes on power management

Differentiated Services -- interrupters work with MSI, Quest IOVCPUs
  • Ryan Ruan presentation
  • Notes on USB Differentiated Services




Week 14 (4/21) Quest-V advanced concepts -- shmcomm, tuned pipes, power management, DriveOS & ModelMap
  • Notes on Quest-V advanced topics: DriveOS, power management,...

Security -- system compartmentalization basic concepts, capability systems Basic Concepts:

Capability Systems:

Capability-aware Hardware:

  • Team Presentation 4
  • Notes on compartmentalization+ capability systems




Week 15
(4/28)
Security -- vmfunc instructions, CET (control flow enforcement technology), VT-rp (HLAT concepts), CACHE approach: sentry code concepts, examples, comparison with related work
  • Notes on x86 microkernels and secure VMs
  • Instructor + Shriram Raja + Ryan Ruan: Notes on CACHE

Class Project Presentations


Poster Session

  • Team project demos in final exam slot with posters