Weenix

Systems

Overview

About the project

A full operating system, based on Unix, built as a semester long project

Date
April 27, 2023
My Role
Debugging lead, developed the code needed for VFS, threads, VM functionality

Making an OS

I was part of a team that was tasked with developing an OS based on the x86 architecture and should, in theory, compile to an image that can be run on a bare x86 machine. The OS has to be able to run several threads and processes concurrently in kernel mode as well as in user mode, develop the virtual file system (VFS) to be able to provide interface between the kernel and various file systems and a virtual memory (VM) to enable the kernel to manage user address spaces, to run user level code and handle system calls.

We implemented the following features as part of Weenix: 

  • Procs - Threads, processes, and synchronization primitives.
  • VFS(virtual file system) - Interface between the operating system(kernel) and other file systems such as S5FS, FAT32 and device drivers
  • VM(virtual memory) -  Running user-level code, page frame management, address space implementation, handling system calls, and everything else needed to combine all of the previous componets into a fully functioning operating system. This includes virtual memory maps, handling page faults, memory management via anonymous objects and shadow objects, and system call support.

Running weenix
Fork-and-wait test
VFS test

View official documentation here.

view demo

access to code repo can be provided upon request