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.
![](/images/projects/weenix/weenix-filesystem.png)
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
![](/images/projects/weenix/weenix-initial.png)
![](/images/projects/weenix/weenix-stat.png)
![](/images/projects/weenix/weenix-stress.png)
![](/images/projects/weenix/weenix-halt.png)
Weenix was developed in Spring 2019.
see official documentation