At a high level, microkernels push as much as possible into userspace, and monolithic kernels keep drivers in kernel space
There are arguments for each e.g. a buggy driver can’t write into the memory space of another driver as easily in a micro kernel, however it’s running in the same security level as userspace code. People will make arguments for both sides of which is more secure
Monolithic kernels also tended to be more performant at the time, as you didn’t have to context switch between ring 0 and ring 1 in the CPU to perform driver calls - we also regularly share memory directly between drivers
These days pretty much all kernels have moved to a hybrid kernel, as neither a truly monolithic kernel nor a truly micro kernel works outside of theoretical debates
And funnily enough, the kernel doesn’t follow the unix philosophy either as far as I know.
I have heard that before in a joke setting, I would love to hear genuine arguments for and against it.
The debate is as old as Linux itself, and well documented.
It doesn’t seem to be a debate. “Microkernels are better” “yes but I don’t have the time for it” but thanks
At a high level, microkernels push as much as possible into userspace, and monolithic kernels keep drivers in kernel space
There are arguments for each e.g. a buggy driver can’t write into the memory space of another driver as easily in a micro kernel, however it’s running in the same security level as userspace code. People will make arguments for both sides of which is more secure
Monolithic kernels also tended to be more performant at the time, as you didn’t have to context switch between ring 0 and ring 1 in the CPU to perform driver calls - we also regularly share memory directly between drivers
These days pretty much all kernels have moved to a hybrid kernel, as neither a truly monolithic kernel nor a truly micro kernel works outside of theoretical debates
Thanks! I will look into