Skip to content

Latest commit

 

History

History
64 lines (56 loc) · 1.52 KB

harvard-cs-161-2018-spring.md

File metadata and controls

64 lines (56 loc) · 1.52 KB

Introduction to Operating Systems (Spring 2018)

Course info

  • Instructors: Eddie Kohler
  • Textbook: no mandatory texts, recommend ones:
    • Operating Systems In Depth: Design and Programming (was a required textbook)
    • Understanding the Linux Kernel (old version of Linux)
  • URL: https://read.seas.harvard.edu/cs161-18/

Outline

  1. Course introduction
  2. x86-64 page tables
  3. Task switching and %gs register
  4. Boot process and memory layout
  5. (Exercises)
  6. Task switching exercises
  7. Buddy allocator testing
  8. Wait queues
  9. Debugging in real operating systems
  10. Virtual file system design
  11. File system disk structures
  12. Lambdas, virtual functions, and reference counting
  13. VFS design tournament
  14. File system correctness and speed
  15. NCQ and journal design
  16. Large-scale file systems and GFS
  17. Scheduling and BVT
  18. System call performance
  19. Lock design
    • Multicore
    • MESI protocol
    • Cacheline bouncing problem
    • False sharing
    • Atomic instruction
    • Spinlock
    • Memory models
    • Ticket lock
  20. Scalable and read-write locks
    • Locking characteristics
    • Throughput vs. latency
    • Simple lock
    • Ticket lock
    • MCS lock
    • Futex
    • Read-write locking
  21. RCU
    • RCU implementation
  22. System call design, file system invariants
  23. Networking
  24. (Special seminar: Mothy Roscoe talk)
  25. Virtualization

Section

  1. Meltdown
  2. The microkernel debate
  3. Kernels and programming languages
  4. Kernel and file system bugs
  5. Scalability
  6. Containers