← Projects

Pintos: Operating System Development

Built Pintos educational operating system: a pedagogical project for understanding core OS concepts on 80x86 architecture. I developed and refined kernel threads, virtual memory management, user program execution, and file system features.

GitHub unavailable — source cannot be published under course academic integrity policies.

Problem

Modern operating systems must remain reliable under concurrency and heavy load. Scheduling needs to balance fairness and responsiveness, synchronization must prevent race conditions, and the file system must preserve consistency even during crashes or overlapping file operations.

What I built

Implemented core operating system functionality in Pintos, including thread scheduling, synchronization primitives, user program support, and a persistent hierarchical file system. Built thread-safe kernel mechanisms using locks, semaphores, and condition variables to coordinate access across shared subsystems. Added support for system calls, process management, buffer caching, subdirectories, and concurrent file access while maintaining filesystem consistency under stress tests and parallel workloads.

Architecture

Worked across the full Pintos stack, including the threading subsystem, syscall interface, process lifecycle management, and filesystem layer. Extended the filesystem with inode management, directory structures, synchronization around shared buffers, and a block cache with eviction policies to improve performance and reliability under concurrent access.

Technical challenges

Debugging race conditions and deadlocks across interacting kernel subsystems, reproducing nondeterministic failures under concurrency stress tests, and preserving filesystem consistency during abrupt shutdowns or overlapping file operations. Balancing scheduler responsiveness and fairness without introducing starvation or priority inversion issues.

Features

  • Alarm clock and priority scheduler
  • Process control and argument passing syscalls
  • Persistent hierarchical filesystem with subdirectory support
  • Buffer cache with eviction policies
  • Concurrent file operations with synchronization safeguards
  • Thread-safe kernel synchronization using locks, semaphores, and condition variables

Tech stack

C, Pintos, QEMU, Bochs, GNU toolchain, GDB, Pintos testing framework

Results / metrics

Passed the full targeted Pintos test suite, including concurrency and filesystem stress tests. Improved filesystem reliability under parallel workloads through synchronization and consistency enforcement across shared resources.

What I learned

Building operating systems reinforced how small synchronization mistakes can cascade into system-wide failures. More than anything, the project taught me the importance of disciplined debugging, incremental testing, and designing around correctness before optimization.