Skip to content

hrz6976/OperatingSystem

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

PKU OS course project and notes based on Nachos and XV6

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 46.7%
  • Makefile 18.2%
  • PostScript 15.6%
  • C 9.7%
  • TeX 7.6%
  • Assembly 1.7%
  • Other 0.5%