Much of modern operating systems are the hordes and hordes of drivers; the fundamentals aren’t terribly complicated; just lots of detail.
Much of modern operating systems are the hordes and hordes of drivers; the fundamentals aren’t terribly complicated; just lots of detail.
"Just" is understating it.
It's the kind of project that takes 20 years to accomplish on your own, and everything seems doable from moment to moment because you have to work very slowly, and the stepwise changes aren't hard.
Just get the thing to boot. Just boot into extended mode. Just get graphics running. Just get a userspace. Just implement cooperative multitasking. Every step is "just", but when you take a step back the complexity is enormous, and it becomes hard to explain to anyone how it works in its entirety.
Although it seems easy to the author because that's just how his brain works now -- by then end of it, you and the OS are one and the same, where your brain is essentially a map of the codebase and nothing more, because nothing else can fit.
Then there is the question of what one means by an operating system. While I'm sure that most people would agree that much of the software shipped with Windows, Mac OS, or the typical Linux distribution isn't part of an operating system proper, few would agree upon where the boundary lies.
making toy os for a nice small board on a nice architecture like riscv is night and day more enjoyable. not that modern boards that have more device tree overlays than senses are a good starting point either.
a more modern mmix that builds further up, or nand2tetris, xv6 or any other riscv project going all the way to a user mode ui would be really cool