Username or EmailPassword
"Microkernel design took much longer to crystallize so that it wouldn't have race conditions and be efficient."
I think you are right that early on in a kernel's development, a macrokernel takes less work. As it gets more and more complex though, a microkernel should theoretically pull out ahead by being easier to manage.
Microkernels are a natural fit for contract based programming where independent developers can work on different components without stepping on each other. This is absolutely a shortcoming of linux today, where each kernel causes new things to break for out of tree developers and modules have to be routinely recompiled in unison or they'll break.
"By the way, Linux supports replacing the kernel on the fly since many years, and it's called kexec."
I don't believe this is what was meant by not rebooting. What was meant was updating the kernel in place without loosing state such that applications won't notice the upgrade. So for instance, all the running applications and all their in-kernel handles and sockets need to be saved and restored right back where they left off after being patched. Supposedly ksplice does it.
It's exactly what I meant. It's feasible to build an efficient and robust micro-kernel but contracts are hard and should put in the right place to not impact performance too much.
Another aspect was that personal computers didn't have hot-swappable components (even today except for SATA and USB). Once the bugs are ironed out of the drivers, there is little use of compartmentalization if you need to reboot your computer anyways. Moreover, if the CPU, RAM, bus or disk fail there is little you can do.
In the end I believe that micro or macro, all practical kernels (as in not for reasearch) tend to go in the same direction even if they didn't start at the same point. Darwin for example has a micro-kernel (Mach 3) base but got augmented with some BSD code. Linux adds compartmentalization where needed.
That said, I'm not an expert so what I'm saying might be bullshit