It’s been busy in the world of hobby and teaching/learning operating systems these past few months, and today we’ve got another one – SpecOS.
SpecOS is a 64 bit operating system kernel for x86-64 processors, still in quite early stages, written in (questionable quality) C. It is (not very) powerful.
This used to be 32 bit, but has been transferred to a 64 bit operating system.
It uses a monolithic kernel, because I like having everything in one place. This may take some inspiration from other operating systems, but it is not UNIX based.
โซ SpecOS GitHub page
It’s got the basics covered with PS/2 keyboard and VGA support, a real-time clock driver, a basic hard disk driver, and physical and virtual memory management, among other things. We’re clearly looking at a hobby project, and the author is very clear about that. A virtual machine is highly advised, as running it on real hardware is… Well, you’re on your own, basically.
Hey, thanks for writing on my project! Thought I’d leave an update and say that:
– It actually has now been tested on real hardware (yay!); and
– Another pretty major thing it has is a file system, which is nice.
Again, thanks for mentioning the project ๐
Excellent work!
I saw that you have vim on your roadmap. It is an excellent editor, and my choice as well.
However, may I suggest starting with something smaller so that you can have self hosting. Something like nano or pico?
Thanks for your suggestion ๐ I think that I will just do Vim, as they will be on a similar level of difficultly. The hardest part will generally be porting the ncurses library, which both of them require. Either way, I’m quite far off that point where I’m porting software anyway.
Okay, fair point.
If you can do VIM, you already have a “mini operating system inside” ๐
One more thing:
I’m sure you are already reading Linux/BSD/Minix sources to understand device drivers. Sometimes the code seems to do things that “do not make sense”, but the hardware has idiosyncratic behavior not described in datasheets. So those strangely ordered initialization dances are done for a reason.