A full operating system, based on Unix, built as a semester long project.
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.
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/zeroand/dev/null. - VFS (Virtual File System) - A polymorphic 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 implementation based on the original Unix file system.
- VM (Virtual Memory) - Userspace 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
forksyscall).
Running Weenix
Fork-and-wait test
VFS test


