7 ms·
I guess what I'm getting at, is in a fair fight, an open source monolithic always works better than an open source microkernel. Behind closed doors decisions a
by VLM 12y ago
I guess what I'm getting at, is in a fair fight, an open source monolithic always works better than an open source microkernel. Behind closed doors decisions always have other concerns... licensing, support contracts, standardized docs, porting assistance, the list goes on and on.
For example, look at the recent minix release notes listing the well known theoretical advantages of a micro when a driver fails. Then look at the actual release notes where ARM USB is broken and crashes the entire kernel, in practice.
So with a theoretically superior microkernel design, you could restart a crashed driver in theory, although in practice when drivers crash they take the kernel with them. So you could recover from an error although in practice it doesn't work.
With a theoretically inferior monolithic design, you can't (easily) restart a crashed driver. Monoliths work around that problem by not crashing. See linux USB support on ARM. So you can't recover from errors, that don't happen anyway, so in practice it doesn't matter.
In actual deployment it doesn't matter anyway because software of a low enough quality to suffer severe driver problems most likely won't live long in the marketplace, and most driver software issues are a symptom of the device hardware being damaged, destroyed, or removed. So if your mass spectrometer A/D converter was vaporized by literal lightning, it doesn't really matter if the kernel crashes; besides the lightning probably vaporized the CPU at the same time.
One event like this is an anecdote. A couple is a trend. A couple decades of this in the marketplace, well thats something else.
- jacquesm 12y agoMinix is not at all the best example of a microkernel, which is why I have yet to see it in production. QnX is an example of a best-of-breed microkernel and the thing is for want of a better word indestructible. We ran large clusters (for the day) of these and there has never been a documented case of a crash of a kernel that was not hardware related. Pretty impressive given the number of transactions that we would push through those boxes. Device drivers in QnX are completely separate processes that use send/receive/reply to communicate with the kernel, just like every other process. On top of that they have the ability to talk to hardware. If a device driver causes a bus to be locked and never unlocked or if a device driver starts talking to ports that it has no business talking to then that can cause a problem. So as long as hardware is involved device drivers can cause trouble for all the other processes on the system. But in QnX those are very rare instances, I've never seen one but my QnX days preceded the arrival of USB.
- taeric 12y agoCan you share some of what these clusters were doing? Sounds interesting.
- jacquesm 12y agoA very large message switch with very harsh penalties in case it was down. At some point in time it brokered a substantial portion of the worlds shipping tonnage. Privately held company, very small, very wealthy.
- taeric 12y agoWhat sort of messages? And, any logic in routing them? Or is this literally a network switch? Curious how this stacks up against the likes of Amazon's or Twitter's stuff. Or do they have Qnx based setups, as well?
- jacquesm 12y ago> What sort of messages? Broadcasts of capacity seekers and offerers. Along the lines of 'I have 50 40' containers sitting in Panama, Colón, destination Rotterdam, bids in by 14:00 GMT tomorrow'. This would then get broadcasted to all parties that were capable of taking on all or part of that load, within a guaranteed delivery time through just about every medium you can think of with the exception of carrier pigeons. This does not compare at all with Amazon or Twitter, though twitter uses 'Erlang' in their stack somewhere and quite a bit of the philosophy Erlang uses dovetails with the way you build such systems (which is perfectly logical because Erlang came out of Ericsson and they had problems that were mostly synonymous with message switching). I'm not aware of either using QnX in their setup.
- taeric 12y agoCool. Probably compares more favorably with them than you are letting on. The volume you seem to be implying sounds very impressive. It does make me wonder if the world should have just gotten better at state machine construction. This seems like if you kept it simple, things would have been straight forward to scale. (Not necessarily easy.) Which is all to say that I do question how QNX really helped here. Seems more a side detail that neither helped nor hurt the effort.