Perfect display of how universities are good at judging people about how well they know how to "play the game" (and usually that involves conforming to whatever frame of mind your professor thinks is right).
Perfect display of how universities are good at judging people about how well they know how to "play the game" (and usually that involves conforming to whatever frame of mind your professor thinks is right).
What about IPC overhead?
In theory you can postulate the performance impact is worth. In practice the is much more in it. That is the difference between computer science and software engineering.
Contemporary microkernels like L4 are much, much faster.
The monolithic approach is easier because you just call a function in another component or read its data structures. In a microkernel, you need to design interfaces and protocols first.
And even better: a crash of your driver does not take down the whole system. So you can just keep on working.
Designing protocols and interfaces is roughly the same in either case, after all you could settle on a very simple set of messages for most interface problems, with open, close, fcntl, read and write you would be able to do the majority of interface tasks.
From a software engineering perspective, it left a lot to be desired, too. It basically only supported what was on Linus desk.
One could say the things Linux had going for it were a) a GPL license, b) being small, c) arriving at just the right time, and d) Linus willing to accept external input.
Whether a) is an advantage of course depends on personal preference. b) helped with d) because it made it feasible for many to download the thing; c) was luck; d) IMO was the most influential factor.