# Overview

In Spring 2019, I developed the majority of a operating system kernel known as “Weenix” as part of the CSCI1670: Operating Systems course (and its optional half-credit lab CSCI1690: Operating Systems Laboratory) at Brown University.

Weenix was designed to be developed over the course of the entire semester. I did my best to start things as early as possible, and after writing over 6,000 lines of code, I ended up finishing the project three weeks early. (Phew!)

I implemented the following features as part of Weenix:

• Procs. Threads, processes, and synchronization primitives.
• Drivers. Device drivers for terminals, disks, and the memory devices /dev/zero and /dev/null.
• VFS (Virtual File System). A common interface between the operating system kernel and the various file systems (such as S5FS and device drivers).
• S5FS (System V File System). A file system based on the original Unix file system.
• VM (Virtual Memory). User address space management, running user-level code, servicing system calls, and basically everything else needed to combine all of the previous componenets into a fully functioning operating system. This includes virtual memory maps, handling page faults, memory management via anonymous objects and shadow objects, and system calls (in particular, the elusive fork syscall).

# Screenshots

Weenix was developed in Spring 2019.