A simple x64 OS-from-scratch experiment.

mizusato 9204af9c1c fix 2 months ago
bootloader ab832e2115 consume memory according to memory map 3 months ago
build bd07f2e246 new 64-bit kernel 3 months ago
core 0475a3ac45 fix and enhance multi-task 2 months ago
shell 9204af9c1c fix 2 months ago
ui d6036f21c3 adjust 2 months ago
userland b19584106e fix, keyboard and mouse demo, multiple console 2 months ago
.ccls bd07f2e246 new 64-bit kernel 3 months ago
.gitignore bd07f2e246 new 64-bit kernel 3 months ago
Makefile c87314c240 add makefile, adjust code 3 months ago
README.md bf8e05a39e readme 2 months ago
boot.h 6bb2d165cf adjust 3 months ago
build.sh 128e4f99ba scheduler, enhance code 2 months ago
demo.png bf8e05a39e readme 2 months ago
kernel.asm c4def8c476 fix gdt 2 months ago
kernel.cpp d6036f21c3 adjust 2 months ago
link.ld bd07f2e246 new 64-bit kernel 3 months ago

README.md

OS Playground

This is an experimental OS-from-scratch project. Just for demonstration, not useful at all.

Different from OS in other projects, this OS is completely libC-free and assumes an interpreted language is used as the only userland language. Although I did NOT have enough time to design a new language and write an interpreter for it, the scheduler of this OS assumes userland programs are executed by a VM, and the memory for userland is automatically managed in kernel-level (no paging, no virtual memory).

I don't have any prior OS development experiences. Therefore, the implementation is naive. But it can be a PoC of the OS design based on non-native userland mechanics.

To build it, just run make in your GNU/Linux command-line. Install missing dependecies if error occurred. After build finished successfully, an ISO disk image will be generated in the build directory, which can be used in VirtualBox or other emulators. (make sure x64 and EFI both enabled in your configuration)

screenshot