A complete Unix-like operating system kernel for the x86_64 architecture, built as part of Brown's Operating Systems course (CSCI 1670/1690).
Note: Due to academic integrity policies, source code for this project cannot be publicly shared.
Weenix is a semester-long project that involves building a fully functional Unix-like operating system kernel from the ground up. Originally developed in 1998 and based on early Unix versions, Weenix has evolved to run on QEMU and supports the x86_64 architecture, incorporating modern OS concepts. This intensive project is renowned for its depth and is a cornerstone of Brown's Computer Science curriculum.
The kernel implements all the fundamental components of a modern operating system, providing hands-on experience with low-level systems programming and fostering a deep understanding of OS internals.
The project was completed in five major phases, each building upon the previous:
Implemented the kernel's core concurrency mechanisms. Weenix processes have a single kernel thread, and there's no kernel-mode preemption; threads run until they explicitly yield.
Created drivers for hardware interaction, terminal I/O, disk access, and memory devices.
Built an abstraction layer to support multiple concrete file systems with a unified interface.
Developed a concrete on-disk file system based on the traditional System V layout.
Implemented a complete virtual memory management system.
Lines of C code written
Test suite pass rate
Development timeline
Implementation of key system calls
Building an OS presented unique challenges that deepened my systems programming expertise:
This project provided invaluable experience in:
Completing Weenix gave me a comprehensive understanding of operating system internals that has proven invaluable in my career. The project's emphasis on building robust, efficient systems code has influenced my approach to software engineering, particularly in performance-critical applications and when working close to the hardware.