And in all honesty, Linux has adopted a number of elements over the years that would not have flown with the original fully monolithic kernels.
No, we don't have userspace drivers. (Apart from proprietary GPU drivers and a number of enterprise hardware systes .. and at least Canon printer drivers, and and and and ...) They're not isolated in the sense that microkernels would enforce but they provide a shim for the kernel and then do a lot of their processing in userland.
We can load and unload drivers at runtime. That's what insmod/rmmod do.
We don't do message passing between kernel components, but in order to prevent messaging from becoming a bottleneck we have signaling mechanisms, we have netlink, and we have $deity knows what else.
We DO have userspace filesystems: FUSE. I'm still waiting for userspace block device drivers but that's probably not going to happen. :)
What do we have with Linux then? Not a microkernel - just a very modular and runtime-modifiable mostly monolithic kernel instead. A hybrid? Ish?
I think you have to straight up call Linux a monolithic kernel. It's got some nifty modularization features, but none of them (other than maybe FUSE) are really what the microkernel folks are going for. And that's fine. Both approaches have obviously evolved to fill niches the other doesn't satisfy as well. What's clear is that nether approach is a panacea for all compute needs.
And in all honesty, Linux has adopted a number of elements over the years that would not have flown with the original fully monolithic kernels.
No, we don't have userspace drivers. (Apart from proprietary GPU drivers and a number of enterprise hardware systes .. and at least Canon printer drivers, and and and and ...) They're not isolated in the sense that microkernels would enforce but they provide a shim for the kernel and then do a lot of their processing in userland.
We can load and unload drivers at runtime. That's what insmod/rmmod do.
We don't do message passing between kernel components, but in order to prevent messaging from becoming a bottleneck we have signaling mechanisms, we have netlink, and we have $deity knows what else.
We DO have userspace filesystems: FUSE. I'm still waiting for userspace block device drivers but that's probably not going to happen. :)
What do we have with Linux then? Not a microkernel - just a very modular and runtime-modifiable mostly monolithic kernel instead. A hybrid? Ish?