Pintos
Published:
Pintos is a simple operating system framework designed for the 80x86 architecture.
Overview
Pintos initially supports:
- Kernel threads
- Loading and running user programs
- A basic file system
These features are implemented in a minimal, straightforward way. The projects progressively enhance Pintos in these areas, including support for virtual memory.
Project Info
- Project 1: Implemented in the
project1branch - Projects 2–4: Implemented in the
mainbranch
Project 1: Threads and Synchronization
- Wake threads at the correct time using a heap (avoiding busy waiting)
- Priority-based scheduling with locks and priority donation
- Multilevel Feedback Queue Scheduling
Project 2: User Program and Syscalls
- Program exit status reporting
- Argument passing to user programs
- Basic and Filesystem syscalls
Project 3: Virtual Memory
- Page, Page Table, Frame, Swap in/out (Page Fault)
- Lazy Load and Stack Growth
- Memory mapping files
Project 4: File System
- Indexed and Extensible Files
- Subdirectories
- Buffer Cache
Execution Environment
While Pintos could theoretically run on a standard IBM-compatible PC, for practical reasons, it runs in system simulators that accurately emulate an 80x86 CPU and its peripheral devices. The supported simulators include:
- Bochs
- QEMU
- VMware Player
