How QNX Technology works from the QNX team.
QNX Neutrrino is a very advanced OS. A Multicore, multi tasking, multi user, reliable, protected, secure, microkernel, scaleable, distributed OS built on industry standard API’s and a magical API’s of their own.
The DNA of QNX is not Win32 like windows and is based on POSIX like Linux and OSX. It is focused on reliability using things like:
- Grid technology using Power, networking, defense, medical…
- Display technology
- And now Tablet devices
Quite a few things are powered by QNX from Cisco routers to beer brewing. Here are a few things they embed to build reliable systems:
- Adaptive Partitioning guards against something which consumes too many CPU cycles – Lets them guarantee that certain programs cannot harm the system or maintain performance. The best part is that it is not fixed and only comes into place when it is needed.
- Memory protection to guard against something that consumes or damages memory
- File protection to guard against something that consumes or damages files
QNX has a patent on the Adaptive Partitioning that will make multitasking amazing on the Playbook. The kernel is designed to be small and ultra reliable. Traditional OS’s are monolithic and contain a huge amount of code that can fail. Commercial software usually has 5-30 bugs per 1,000 lines of code. WindowsCE has 3.9 million lines and Linux has 9+million. Windows has 70+ million. The core kernel of QNX has 100,000 lines of code that are optimised like crazy. QNX is certified from POSIX, FDA, OpenGL, ISO9001, EAL4+, SIL3, and more that show it is a protected OS.
This is all based on the microkernel that supports ARM, MIPS, PowerPC, XScale and tons or processor technology options.. Everything plugs into the microkernel like Process manager, application, driver, networking, everything is a plugin so that it is self healing. If anything goes down it only takes that one part down. Think NO BLUE SCREEN OF DEATH! Everything runs in a process so it is easy to debug instead of the whole OS.
Applications and drivers all reside in their own memory protected address space and use well define message interfaces. Because all of this messaging and segregation then the OS and applications become distributed allowing for efficiency. They also have the concept of multiple microkernels that allow machines to communicate over a network for encrypted transport. It will allow devices to communicate on a whole new level. So it does both multi threaded in the dual core up to 32 core processors or it can do distributed and speak between multiple devices that would not know that they are on different devices. For example, your PlayBook could just speak directly to your BlackBerrys bluetooth or cellular radio or even its GPS.
Advanced memory management is also very useful since the way most OS’s manage memory causes a 20-30% performance hit especially on ARM processors. That is why QNX changed how applications work with memory pages allowing for larger memory pages from 4k to 1m pages adding 10-30% performance. This will let them use a 1GHz processor act like a 1.3Ghz processor. This is baked into the technology and is something that can only be baked in and not added to other platforms easily. RIM is getting another thing competitors cannot easily copy.
The application platform is another space developers are interested in. For example there is Adobe Air and Flash, Java, OpenGL, POSIX, WebKit, and other programming languages. QNX is a message passing operating system so which allows for information transfer between the OS and the application world. They build up a asynchronous abstraction objects that developers understand that will allow for interfaces with things like audio, phone, GPS, network, and more. That way applications can tie into each other in the real time OS using an asynchronous API. For example, a CAN object for a car will automatically show you what the car is at like speed, engine temp, that the API can publish for subscriber apps to access. Another example, say an app wants to know when a signal strength change happens.
The really novel thing here is that all of this is built into the OS and not the programming language. To QNX all of the programming languages are just objects that are all equal and extensible. They can just add new virtual environments and platforms without re-architecturing. They also have cool features like the Launcher which makes it much easier to speed between apps without just taking screenshots to make them seem faster like the iPhone OS.
Here is a dive into the OS:
- First layer is the Neutrino OS with networking, drivers, and all the core features
- Navigator is the part that implements windows management and application management. It moves applications between the background and foreground.
- Launcher is what launches apps like Native apps, adobe air, HTML apps, etc. It monitors memory and terminates apps. It is the system that creates virtualized secure environments and actually starts and stops the apps and communicate with the Navigator on changes.
- Apps – These are the apps that run in their own virtual memory protected space. Each app has its own environment
The real magic happens in the Composition which handles the view. It will let you pull up web, PDF, video, and other views into adobe air or other technology. Very powerful stuff that could bring tons of renders together into one system and then project it onto a TV screen using HDMI.
The media architecture is pretty impressive with a media engine giving it access to:
- SQL database of media
- Media Engine with easy plug-able codecs! and online content
Development environment works on Windows, Linux, and OSX. This includes Adobe CS5 for Air or Flash, QNX momentics for native development, and RIM tools for Java. The entire software stack runs on VM Ware and allows you to run in in any environment! One click publish, sign, and debug over WiFi to a tablet with a full screen debugger!!!
Native development is the next thing they were going to cover. The tools for QNX were based on Eclipse and was one of its founding members as the 3rd member. The tools are called Momentics. They have a large set of tools for QNX from a:
- Code coverage tools
- Application profiler
- System profiler,
- Memory analysis
- System builder
- target navigator view
- GCC optimizing compilers
- ANSI C Libraries
- Dinkum C++ and Embedded C++ libraries
- Lots of other libraries
- GDB debugger.
Let me know if there are any other questions you want us to ask!