Skip to content

abhijithkunchati/Weenix-OS

Repository files navigation

Weenix

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

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.

Features

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 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 fork syscall).

Screenshots

image

Running Weenix

image

Fork-and-wait test

image

VFS test

About

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

Topics

Resources

Stars

Watchers

Forks

Languages