/OperatingSystem

PKU OS course project and notes based on Nachos and XV6

Primary LanguageC++

Operating System

PKU OS course project and notes based on Nachos and XV6.

  • Nachos - An immature OS that we can try to add wings on it.
  • XV6 - A much more functional OS that we can absorb its essence by tracing code.

Schedule

Nachos Lab

Lab Subject Detail
Lab 0 Build Nachos Setup 32bit cross compile dev. env.
Lab 1 Thread Mechanism Multi-thread management
Lab 2 Thread Scheduling CPU scheduling
Lab 3 Synchronization Mechanism Concurrency, mutex lock and semaphore
Lab 4 Virtual Memory TLB, demand paging, replacement algorithm and user program
Lab 5 File System Improve current file system
Lab 6 System Call Implement all system calls

Quick start with docker!! (recommend)

XV6 Source Code Reading

  1. Process and Thread (with Scheduling)
  2. Synchronization Mechanism
  3. Interrupt and System Call
  4. Memory Management
  5. File System

Additional Task

Synchronization using Semaphore and Monitor

Notes

Course Notes

Summary

Algorithm

  • Scheduling Algorithm
    • Process/Thread CPU Scheduling
    • Disk Scheduling
  • Replacement Algorithm
    • Page Replacement
    • TLB Replacement
    • Cache Replacement
  • Other Algorithm
    • Deadlock
      • Deadlock prevention
      • Deadlock avoidance
      • Deadlock discover and recover
  • Solutions
    • Concurrency
      • Semaphore
        • Dekker Solution
        • Peterson Solution
    • Deadlock
      • Banker's Algorithm

Data Structure

  • Free Space Management (for Memory or Disk)
    • Bitmap (Bit vector)
    • Free Table
    • Free Linked List
  • Concurrency
    • Semaphore
    • Monitor
      • Hoare Monitor
      • Mesa Monitor
    • Mutex Lock + Condition Variable

Hardware

  • TLB vs. Cache

Resources

Books

Nachos

MOOCs

Github

Others