I posted the code from my Implementation of Operating Systems class on GitHub. Its provided as-is, with no warranty or support, I don’t even know if can still be compiled.
Notes:
The OS was built using Linux. The assembly files were compiled using NASM. The C++ files were compiled using the Intel Compiler, icpc. If you decide to try and compile this project, you cannot use g++ because of the inline assembly I used. At least when I wrote this, gcc did not support inline assembly using the __asm
keyword. The Intel compiler and MS VC++ compiler support it.
If you want to read it, I’d recommend starting with HyperOS/src/include/kernel_main.h.
The project is not well documented. Shamefully, I was more interested in getting it to work than allowing others to read it. I never quite figured out the driver model and didn’t test hot-swapping the global descriptor table. There is some code for a virtual file system, but I didn’t get very far with that either.