7 ms·
You have to be kidding right? Microkernels have been used in production for decades in situations where safety, accuracy, and robustness are key. QNX is a micro
by _fq4v 9y ago
You have to be kidding right? Microkernels have been used in production for decades in situations where safety, accuracy, and robustness are key. QNX is a microkernel used in real-time systems to great avail and great stability. Unlike linux, it's the sort of kernel you could really trust to run important infrastructure, like automobiles, unmanned aircraft, high speed trains, and robotic surgery.
Just because you don't consciously interact with them on a daily basis, does not mean they do not exist. My guess is that QNX and kernels like it are the reason you can take for granted such obvious things as your car braking correctly, your train not derailing, and your robot surgeon not crashing.
In today's world, we're so used to software breaking that if it doesn't break, we oftentimes think it must not exist. But, there is a whole world of reliable software out there that can actually be trusted. You don't hear about it often, because they work so well.
- BurningCycles 9y agoWell, one of the things I hope we get to see with projects like Fuchsia and Redox is what the performance difference is against a monolithic kernel like Linux, if/when they have been well optimized.
- Karunamon 9y agoI don't think this will be a fair comparison, since most of Android's performance woes are at the feet of running on a JVM.
- pjmlp 9y agoART is a thing since Android 5.0 and it has become quite good. Even the parts written in straight C and C++ code have issues in performance woes on Android, as everyone that has wanted to do real time audio on Android painfully knows. The whole architecture has been a mess.
- bitmapbrother 9y agoSpeaking of performance issues and architecture messes, have you ever tried real time audio on Windows Phone? The absence of real time audio apps speaks volumes.
- pjmlp 9y agoI was missing your blind Google advocacy and Microsoft hate. Did they fired you? If you had any Android developer experience, you would surely know that Google had a few failed attempts at real time audio, needed help from Samsung to implement them, and the final API was C only, with devs asking for a C++ one, wich was later dumped on github as side project and isn't part of the official NDK APIs, but alas you don't.
- 0xFFC 9y ago>If you had any Android developer experience, you would surely know that Google had a few failed attempts at real time audio, needed help from Samsung to implement them, and the final API was C only, with devs asking for a C++ one, wich was later dumped on github as side project and isn't part of the official NDK APIs, but alas you don't. Would you mind to explain what happened completely? I am very curious about it. Thank you so much ;)
- pjmlp 9y agoSure. Originally Android only had the Java media APIs, with a quite complex state. https://developer.android.com/reference/android/media/MediaPlayer.html https://developer.android.com/reference/android/media/MediaP... Android 2.3 introduced OpenSL ES into the NDK and Android 4.0 got OpenMAX. All of them weren't up to the game of realtime audio due to the Android architecture. http://superpowered.com/androidaudiopathlatency http://superpowered.com/androidaudiopathlatency https://nsr.cse.buffalo.edu/wp-content/uploads/2016/10/rtdroid-sound-jtres16.pdf https://nsr.cse.buffalo.edu/wp-content/uploads/2016/10/rtdro... https://www.androidauthority.com/android-6-0-marshmallow-audio-latency-670727/ https://www.androidauthority.com/android-6-0-marshmallow-aud... There are plenty of other articles online when you search for audio issues on Android. There was even a Google IO 2013 talk about it. https://www.youtube.com/watch?v=d3kfEeMZ65c https://www.youtube.com/watch?v=d3kfEeMZ65c Meanwhile Samsung had customized their Android versions to properly support real time audio and offered an SDK for their handsets. http://developer.samsung.com/galaxy/professional-audio http://developer.samsung.com/galaxy/professional-audio At Google IO 2016 the problem was again discussed, with the Samsung team from Professional Audio being called on stage to discuss their collaboration. https://www.youtube.com/watch?v=F2ZDp-eNrh4 https://www.youtube.com/watch?v=F2ZDp-eNrh4 Finally last year at Google IO 2017, the new real time audio was announced, as C only lib. https://www.youtube.com/watch?v=C0BPXZIvG-Q https://www.youtube.com/watch?v=C0BPXZIvG-Q https://developer.android.com/ndk/guides/audio/index.html https://developer.android.com/ndk/guides/audio/index.html The announced C++ wrapper ended up being an external project on github, detached from the NDK, that you need to integrate yourself, without any guarantees how long Google will care to maintain it. Oh, to make things even better, it is already clear from Android P draft documentation that new audio APIs are on their way.
- IshKebab 9y agoYou can run native code on Fuchsia (and Android for that matter). It should be fairly trivial to do some benchmarks.
- juhanima 9y agoNot kidding, but granted, it would have been fair to say that we can now get more evidence. I knew about QNX, and Minix, Symbian and GNU Hurd are also microkernels. It's just that despite all the good arguments for 30+ years, microkernels somehow seem to have failed to reach their full potential. That's why it's going to be interesting to see how Fuchsia pans out, being written from the scratch with all the cumulated knowledge and experience. Not to mention Google's resources and talent pool.
- tathougies 9y agoLike most monolithic kernels, most microkernels have failed. Ultimately, kernel popularity is largely going to be a network effect. Linux is popular on servers because it is both free and popular; not really for any inherent technical merit. Windows is popular because no one loses their job for choosing Microsoft. On the other hand, there are several microkernel operating systems with notable features and significant, dedicated fan bases. For example, AmigaOS is well-known for its responsiveness, and despite not being in production for decades, still has a dedicated fan base. QNX is used in a lot of critical, performance-oriented workflows. OS X is a partial microkernel as well. Nevertheless, the only microkernel that has really failed is GNU/Hurd. Minix fulfilled what it set out to be (educational) and Symbian was successful enough on mobile.
- juhanima 9y agoGood points. Nevertheless, it's still puzzling why microkernels have done so poorly, despite them being superiour in theory. Almost all the ones mentioned here have waned into a curiosity or niche, and maybe also QNX starts to get a bit long in the tooth, having been released in 1982. OS X of course is another story, but also based on 1980's ideas with the Mach kernel. Which is why it's interesting to see another open-source contender to appear from a clean slate. If I remember right, Linus's main argument against Tanenbaum was that the overall state gets so dispersed between the various services that make up a full-fledged OS, that eventually a microkernel-based system just gets unpredictable or starts performing poorly. I think the discussion was inconclusive, although for me Linus's argument sounded intuitively convincing.