This is an implementation of a Unix-like operating system for x86 machines, predominantly written in C and Assembly where needed. It was run and tested on QEMU during development but technically supports physical hardware as well.
The focus was to gain hands-on experience with low-level operating system design and kernel development. Implemented features include virtual memory management, traps and system calls, preemptive scheduling, interprocess communication, interrupts, process forking, a file system, basic device I/O, and Intel VMX virtualization for running guest virtual machines.
This was based on an extended version of the MIT 6.828 Operating System Engineering JOS labs. As such, the implementation was broken into distinct "labs" that build on top of each other. They start with a basic bootloader and progressively add on the more complex functionality.