tomOSii – The Operating System¶
tomOSii is an experimental, 64-bit operating system, targetting the x86_64 architecture, emulated by Qemu. It is using a monolithic kernel.
tomOSii is created primarily as a prototypical teaching tool. It draws inspiration from existing systems like the Linux kernel and xv6, with the goal of exploring different ways of teaching operating system concepts and experimenting with their implementation. While there are similarities to the above, the design and implementation of tomOSii are tailored to provide a platform for learners to explore OS fundamentals in a hands-on, practical manner.
A lot of features are already (partially) implemented and refactored – some to a greater extent than others:
booting to protected mode via GRUB
switching to long mode
a minimal console subsystem including
keyboard input
virtual memory
memory management and allocation
a virtual terminal layer
a TTY layer including a line discipline
the PCI bus, just providing access to
a VirtIO block device
a work-in-progress VFS implementation
a GRUB-module based filesystem providing a way to include executables and data
“faked” system calls to be used by the C library implementation
It is very likely that none of the features listed above are complete – for any definition of completeness. Most of the features should rather be considered work in progress. Features will be implemented whenever they are required. So at any time we hope to have implemented only the minimum feature set. This might help keep tomOSii as simple as and as feature rich as possible.
It turns out that implementing one feature reveals that at least two more features are still missing. We will try to collect features that need to be implemented – but maybe on a very higher-level of abstraction than the features in the above list:
a minimal subset of the EXT4 file system
actual user mode
real system calls
freeing allocated memory
This list is far from complete. The order does not imply any prioritization.
One development step missing from both lists is refactoring. It is very likely that the existing features will undergo heavy refactoring before any of the open features will be added. This refactoring will include adding documentation.
We have not yet decided upon a “done” criterion. tomOSii is mainly intended to be an informative prototype for eventually designing an operating systems course. It therefore remains to be seen, if any of “it runs doom” or “it is self-hosting” are viable criteria …