work:~ call qnx
Dan Hildebrandt (QNX) 613-591-0931 x204 (RIP 1998)
That's me using my phone database. Dan was one of the few people who were allowed to touch the QNX core. It was tiny, it knew that the "micro" in microkernel meant small. The entire kernel fit in a 4K instruction cache. The whole thing. Hello people! Micro means small.
For the people out there that understand operating system design, these guys got it. And they managed to make a distributed kernel that worked. I worked on an 80286 (yup) with ~10 users logged in and working.
I'll give more details if anyone cares.
All that said, please allow me to vent about Mach. I know nothing about hurd.
Mach was CMU project and it was what happens when you let a bunch of people who know nothing about the real world write wack on an OS (and a VM system). It was happening at the same time I was getting a decent education from Uwisc. So it took me a while to catch up.
I caught up after having worked on a Unix port. I learned a lot, as would any of you in the same situation. Practice != theory.
I went back to grad school to get a PhD and ran into a class where they were pushing Mach and I listened for 15 minutes and then I just couldn't take it any more and stood up and said "it doesn't work like that". The prof and I went back and forth for a few minutes and then I took over the class and taught it.
Blah, blah, blah, I haven't really made the case against mach. I have wife and kids waiting on me, I can come back and try and do better. My view of mach is that it added nothing to the body of OS work. BSD did - they added networking. Sun did - they added VM. QNX did - they added a microkernel. Mach - they added marketing in my opinion and nothing else.
Fully agree on QNX: very elegant OS, unique concepts like "syscalls" via synchronous (!) messaging, real-time from the bottom up.
We used it for a robot we build in the 90s. Everything from the low-level control to the image processing on some fine 386 boards with QNX-native networked IPC.
Too bad that Blackberry was probably the death-spell for it.
Also agree on Mach, although somehow NeXT/Apple seem to have managed to make a very good modern OS out of it - with a lot of Mach cruft hidden in the basement. The original NeXTStep Kernel suffered seriously from memory leakage and instability. Unbelievable it became the basis of iOS much later.
The thing that saddens me about QNX is that it had a real good chance of adoption by nerds at the moment when they opened it up. Neutrino was free (not opensource) at some point. Business reasons dictated otherwise I guess.
Back to micro, if you've ever looked at L4, I'd love to read your opinion of it. That project seems to have splintered off as in several direction, and even though it's apparently successfully used for embedded stuff, all the open research stuff seems to have stalled (edit: apparently not stalled, but active into very specific niches).
Just a bit before I hustle out of here to coach hockey all day (don't have kids unless you want to do the same :)
So Mach's VM was being done around the same time as the SunOS 4.0 release which had Sun's VM system (that implemented mmap() and friends for the first time) as well as Sun's vnode virtualization of the file system. As a side effect almost all of the buffer cache vs page cache mess went away (for those who don't know in the distant past pages were one thing and file system buffers were another. Ponder that for a minute and tell me what's wrong with it. Hint: bcopy()).
I was reading all those papers from Joe Moran and Rusty Sandberg and Steve Kleiman; I really really wanted to work at Sun, to me it was the Bell Labs of the day, so I was slurping in everything I could find to read and think about.
I read the Mach papers and later had a chance to wander through the source code. The best way I can say it quickly is that with some things you don't get it and you wander around for a while and eventually the fog clears and you see the architecture. Sun's stuff was like that, when it snapped into focus it was a thing of beauty. The Mach stuff never snapped into focus, for me. Maybe someone else can see how awesome it is but all I saw was a mess. Yeah, it worked, but so do a lot of messes. The good stuff is architected in a way that leads you to respect and maintain the architecture.
Gotta run, here is betting Bryan C will find this thread and add to it :)
QNX is really beautiful and powerful at the same time..
Its equivalent to a haiku poem of OS code and design
I wish it was trully open source.. maybe now that Blackberry .. (we dont know for sure what will happen to it) they maybe
could share to us all.. so this nice enginnering effort coudl have a great future?
I'm also very interested in what you have to say but I wonder, have you checked on the Mach kernel today? And what is your opinion on GNU Hurd with Mach?
My personal opinion is completely uneducated, merely one of quaint amusement that the GNU kernel is still going strong. Perhaps this is a prelude to GNU taking over in 15 years like Linux took over 20 years ago. For now though, it's nothing more than a novelty to me.
I'm interested in what you have to say. I'm particularly interested in how does it manifest that Mach was a research project and that the researchers knew nothing about practice of writing operating systems.
> And they managed to make a distributed kernel that worked.
So it was great the same way Smalltalk and ITS were great: It was wonderful, but most of us couldn't use it, so it was worthless. Technical acumen doesn't matter if the result isn't out in a usable form.