Back to projects

Completed Systems Project · C++ And Assembly

Operating Systems Implementation

A semester-long kernel implementation sequence, ending with a four-person graphics subsystem for an OS capable of running multiplayer DOOM.

Kernel

multi-core preemptive scheduling

Isolation

VM, user mode, 25+ syscalls

Graphics

framebuffer, VGA, VBE, media

Course arc

Aug 2025 - Dec 2025

Stack

C++, Assembly, QEMU

Final team

Archit Patil, Brian Zhang, Brian Qu, Rohan Dugad

Demo target

Graphics subsystem for multiplayer DOOM

Implementation Sequence

1Cooperative scheduling
2Preemptive scheduling
3Shared pointers
4Filesystems
5Virtual memory
6User mode and syscalls
7Networking
8Graphics subsystem

Project Summary

The project built up an operating system in layers: scheduling, shared ownership primitives, filesystems, virtual memory, user programs, syscalls, and networking. The kernel work emphasized synchronization, memory safety, and process isolation in a multi-core setting, including race-condition and memory-leak fixes across 1K concurrent threads.

For the final project, a smaller team implemented the graphics subsystem. The work centered on framebuffer architecture, double buffering, text/VGA/VBE graphics modes, palette conversion, graphics-specific syscalls, and media output paths.

The result was a completed OS implementation project with a graphics stack expressive enough to support a multiplayer DOOM demo, built on top of the earlier kernel, VM, filesystem, syscall, and networking foundations.

Graphics Subsystem

Framebuffer architecture

Implemented display-facing buffers, MMIO-backed graphics output, double buffering, and VBlank-aware swaps to avoid tearing.

Graphics modes

Supported text mode, VGA, and VBE modes across 8/16/32-bit rendering paths with palette and grayscale handling.

Media viewers

Built graphics paths for raw images, PDF scrolling, GIFs, and video playback under kernel resource constraints.

Graphics syscalls

Exposed graphics I/O through syscall interfaces so user programs could drive visual output from the OS.

Kernel Work

From scheduler mechanics to user-facing graphics.

The OS was built as a sequence of increasingly realistic kernel components. The final graphics work was interesting because it had to sit on top of earlier abstractions rather than live as a standalone demo.

Scheduling
Cooperative scheduling, preemptive scheduling, and multi-core execution with attention to race conditions across 1K concurrent threads.
Memory
Shared pointer infrastructure, virtual memory, and process isolation for user programs.
System calls
More than 25 system calls connecting user-mode programs to kernel services.
Graphics I/O
Framebuffer-backed rendering through text mode, VGA, VBE, image formats, PDF scrolling, GIFs, and video playback.

Final Presentation

The final presentation for the graphics subsystem is embedded below and available as a direct PDF.