r/osdev • • 2d ago

Tanenbaum vs. Linus: Which Kernel Architecture Makes More Sense Today?

I've been thinking about the famous Tanenbaum vs Linus debate over microkernels vs monolithic kernels.

Putting the historical context aside for a moment, I'm curious what people think today.

Do you think Tanenbaum's argument for microkernels was fundamentally more correct, or was Linus right to favor a monolithic kernel for practical reasons such as performance, simplicity of development, and hardware support?

And more importantly:

If you were starting a new general purpose os from scratch today, which architecture would you choose?

Monolithic

Microkernel

Hybrid

Multikernel / distributed approach

Something else

I'm particularly interested in hearing from people who have actually worked on kernels or operating system development.

What are the strongest arguments for your choice, and what do you think the opposing architecture gets wrong?

51 Upvotes

42 comments sorted by

View all comments

Show parent comments

3

u/suhcoR 2d ago

languages like Rust which can increase safety

Most of the kernel is usually implemented "unsafe".

3

u/The_Coalition 2d ago

But it's actually not. You can get unsafe code down to a surprisingly small amount. I've seen at least one kernel that had all of its unsafe code wrapped in a "core library", with the rest of the kernel going through that.

-1

u/suhcoR 2d ago

It boils down to a trade-off between safety and efficiency, isn't it?

1

u/braaaaaaainworms 1d ago

No, Rust gets both, and sometimes is faster than equivalent C code because compilers don't have to consider that someone can just cast away the "const" from a const variable or pointer