I should finish up my short-lived series of posts on the little operating system I was working on. Eventually I discovered that I actually knew everything I needed to know to really build an operating system. For the longest time it seemed like such an abstract task that I did not know how to do.
But after spending a few weeks working with x86 documentation and actually building a kernel, I realized it was something I could do. Then the can of worms opened: now that I could build an operating system, what on earth would I build? I could build a macrokernel. Or a microkernel. Or an exokernel. I could map to kernel into the top or bottom half of the memory. And that is only the very beginning. The possibilities were limitless, and I could have spent months just planning the operating system I wanted to build.
Because I started with the goal of learning how to build an operating system, I discovered that I had accomplished that goal. All my system did was read files out of a fat filesystem and execute programs that concurrently printed As, Bs and Cs across my screen. But my goal was never to build a complete operating system.
So having my goal accomplished, I decided that I did not want to spend the rest of my life building a perfect kernel. And that's when I stopped.