HOT! QNX Tablet OS – A Deep Dive Into How It Works!

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…
  • Cars
  • 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:

  1. First layer is the Neutrino OS with networking, drivers, and all the core features
  2. Navigator is the part that implements windows management and application management. It moves applications between the background and foreground.
  3. 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.
  4. Apps – These are the apps that run in their own virtual memory protected space. Each app has its own environment
  5. Composition – This is what brings all of the magic together and shows it to you on the screen. It takes the windows which are arranged in groups owned by an application and shows them on the screen using the technology needed. So say you have a adobe air application and it all done in action script but say you want to have a webkit view inside the adobe air program. So you could have both webkit and Adobe Air running seamlessly together into one app. So with this you could say connect Javascript with Adobe Air all into one app providing an amazing view.

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:
IDE TOOLS:

  • Debugger,
  • Code coverage tools
  • Application profiler
  • System profiler,
  • Memory analysis
  • System builder
  • target navigator view

Compiler components:

  • 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!

18 total comments on this postSubmit your comment!
  1. truly epic.

  2. Can you ask someone there if the device supports full java or if it’s just RIM’s reduced java like we have on BB’s today?

  3. I am sorry, but does anyone who wrote this article actually speak English? The article was for the most part, incomprehensible gibberish.
    This is like a QNX PR piece which was translated into Chinese and then back into English as quickly as possible.
    This is not a serious website if they can’t take the time to make an article readable.
    Sorry.

    • Hi JP,
      Did you have trouble understanding something that you wanted clarified? This article was more of a collection of information that we are gathering on QNX. Developers are dying for info and so far the details are sparse so we collectively wrote this while hearing from QNX employees what it will mean for developers.

      • Yes.. I too agree.. There is no serious technical detail that is of any use to any professional developer.. It looks like a piece for non-tech public who have some overall understanding of things or are very new to OS and tech or are some PR people who give info to tech people but don’t have any internal understanding. The article should not be just a collection of info but some careful writing by someone technically knowledgeable.

  4. Even they don’t know yet if it will be j2me only or also j2fx or even full java. Qnx supports them all…

  5. epic!!! great overview of QNX OS, Dan Dodge is a genius who could ever thought of building such an OS with a killer architecture, indeed a true visionary!! I salute him..

  6. QNX Eclipse based IDE = Momentics (not Momentus)

  7. Seriously Kas? We can’t be experts in everything and learn a new embedded os overnight when even RIM doesn’t even know about how it will work exactly so we shared what we learned without adding commentary which may be wrong since nobody knows much about the BlackBerry flavored QNX other than QNX :)

    • I obviously don’t expect you to be expert of this. I’m replying again because you seem to defend yourself pretty confidently. In case you wanted, I am giving some examples to why I thought that way:

      QNX Neutrrino is a very advanced OS. //This first line is like a start of a small piece in a newspaper introducing non-tech end consumers to the OS, or a line in PR brochure of the company. This whole paragraph is like the copy-paste of the first few lines of company PR brochure.

      Note that the sentences in all of the article are very easily guessed not to have been written by your team but are copy-paste. If it is not so, then it’s just poor English.

      The DNA of QNX is not Win32 like windows and is based on POSIX like Linux and OSX. //This one is again for non-tech or very faintly tech people.

      It is focused on reliability using things like //It should be “It is focused on reliability. It is already being used for things like”. Maybe you were in too much pressure and hurry for publishing. This is a simple English mistake. Proof reading is a must. Or the author doesn’t know anything about the 4 points mentioned after this, which I think is unlikely. There are many English errors all of which I won’t point out.

      Quite a few things are powered by QNX from Cisco routers to beer brewing. //One of the better sentences.

      Here are a few things they embed to build reliable systems: //This whole info till the sentence that ends with “signal strength change happens.” is generic to QNX and not specific to BB’s QNX. So there’s no question of not knowing about BB’s QNX. You could’ve better taken it from the Wiki page of QNX than hurriedly writing it down when some QNX developer is talking. This thing made an unnecessary bad impression.

      Think NO BLUE SCREEN OF DEATH! //Whoever the developer was, he was talking about no BSOD because of any “individual one module”. Here, it sounds like the author mistook it as the OS can’t crash. Unnecessary bad impression u could’ve avoided.

      Traditional OS’s are monolithic //For non-tech person

      These are the apps that run in their own virtual memory protected space. Each app has its own environment. //This is applicable to all OSs since late nineties.

      //Developer’s words reproduced as spoken:

      For example there is Adobe Air and Flash, Java, //The developer probably means to say that all of this is supported on BB’s QNX. But it is not written by you that way.

      which allows for information transfer between the OS and the application world. //This statement applies to virtually any OS. Please don’t write down the developer’s words as spoken.

      I understand you might not be getting all of this myriad details, so at least put it in a third person.

      “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.” //Again, developer’s words. At least quote all of this stuff as third person.

      I took out these 10-15 min to write this as I’m also interested in tech journalism. All of this is neither too simple for a layman to understand nor well written for a pro developer to think of the article a well written one and so the site as a credible source. Unnecessary bad impression u cud’ve avoided.

      The info is good. No doubt. But not much new than the Wiki page.

      • Hi Kas,
        Good points all around. The article was more focused on answering the big question of the day: “What is QNX and why should we care”
        It was not focused on a specific audience and I definitely admit that it could have been written better. It was written during a presentation RIM gave to us on what the new OS means to developers and felt like being hit with a firehose. Think of it as a live blog of what we learned and what readers were asking about QNX.

        I am actually working on a better deep dive into QNX and what it means to developers and users but the information out there is complex and may not apply to a BlackBerry OS.

        About the sections that you do not understand or think relate to any modern OS I am not quite sure what you mean. It is all news to developers and users who have been stuck with an OS built ages ago to act as a glorified pager.

        Do you have a better understanding of QNX? If so feel free to shoot me an email I would love to hear about it.

        • Hi Ronen,

          It’s satisfying for me that you found some of my points useful or valid.

          I think however complex the available information is, it will be worth publishing for your site. It’s just that end users will not read that part. But they can read the part about what the OS may mean to them. The tech people will read the tech stuff.

          By “applicable to any modern OS since nineties”, I mean after the early VMS, CP/M, DOS etc OSs, the OSs started having Virtual Memory for memory protection. NT project was started by MS with some modern features in mind and this was one of them. So it’s a very generic statement that every app will have its own environment. It is of no importance to tech people from QNX perspective and too tech for the end user to be useful. It kinda gives impression that the author doesn’t know the basics of CS.

          I work with OSs but unfortunately don’t know QNX specifically in depth. That’s why was searching for an article and landed on your page. I think the architecture docs on the QNX site will give you some internal details and some internal understanding if you are from tech bkgrnd. The first result to Googling “QNX arch” gives this: http://www.qnx.com/download/feature.html?programid=14695 I’ve just started reading that. For people only interested in deep tech, these docs can serve. But as you already know, intermediate and novice people come to sites like yours for a general idea.

          This doc just says about Neutrino in general. Developers are hungry for information like how their AIR and Flash etc apps will run on BB’s QNX and what all is supported and exactly how it is supported and what will have to be done in the app for QNX compatibility, and what will be the business benefit. Only BB can detail this info, and as u said, you or no one for that matter, can do anything about it till then.

2 total pingbacks on this post

BlackBerry© is a registered Trademark of BlackBerry Limited. BerryReview is in no way affiliated with BlackBerry Limited though sometimes their lawyers send us love letters...

Copyright © 2007-‘2014’ BerryReview LLC