Andrew Warkentin <andreww591(a)gmail.com> wrote:
A lot of people still seem to believe that
microkernels are inherently
slow, even though fast microkernels (specifically QNX) predate the
slow ones by several years.
Wait, are we talking about the same operating system called QNX?
We had a customer at Cygnus in the 1990s (perhaps QNX itself) who wanted
us to port the GNU compilers to it. It was the slowest, buggiest system
we ever tried to run our code on. I think they claimed POSIX
compatibility; hollow laugh! It was more like 1970's compatibility. It
had 14-character file names, the shell and utilities regularly
core-dumped when doing ordinary work, everything had built-in random
undocumented line length limits and file size limits and such (which was
also true in V7 -- that's one thing Richard Stallman insisted on fixing
in every GNU utility; see the GNU Coding Standards).
Our GNU compiler tools ran everywhere, they hosted and bootstrapped on
everything. Everything except QNX. Shell scripts and makefiles that
worked on a hundred other UNIX systems were impossible to get working on
QNX. I think we reported dozens of QNX bugs to the vendor, most of which
never got fixed.
Perhaps somewhere under all that crud there was some kind of "fast
microkernel", but you couldn't prove it by me. By the time it got to
user code, the only thing it was fast at was failing. We were trying to
do real work on it, and gave up after some engineers turned the air blue
with incredulous exclamations. I think we ended up cross-compiling the
GNU compilers for it, from some sane system. They still had to fix a
bunch of bugs in their libraries that we had to link with.
I realize this flame is not about microkernels. But perhaps if they had
spent less time optimizing cache hits in the microkernel, the rest of
their system wouldn't have been shot full of obvious holes.
John