QNX: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
→‎Competitors: Wikilink THEOS, add a space
{{citation needed}}
 
(635 intermediate revisions by more than 100 users not shown)
Line 1: Line 1:
{{Short description|Real-time operating system (RTOS) software}}
{{Infobox_OS |
{{ infobox OS
name = QNX |
| logo = QNX 201x logo.svg
screenshot = <!-- Do NOT change the screenshot unless there is BIG change in the UI. When taking screenshot, please resize your window (e.g. 640*480), disable your extensions and use the default theme. -->
| screenshot = QNX 6.4.1 screenshot.png
[[Image:Qnx621about2.png|300px]] |
caption = QNX Desktop after installation. [[desktop]] |
| caption = The default desktop in QNX 6.4.1
developer = [[QNX Software systems]] |
| developer = [[BlackBerry Limited|BlackBerry]] (formerly [[#History|QNX Software Systems]])
family = Not Applicable |
| family = [[Unix-like]]
| working_state = Current
source_model = [[Closed source]] |
| source_model = [[Closed source]]
latest_release_version = 6.3.0 |
| released = {{start date and age|1982}}
latest_release_date = date unknown |
| latest_release_version = 8.0
kernel_type = [[Monolithic kernel#Microkernels|Microkernel]] |
| latest_release_date = {{start date and age|2023|12}}
working_state = Current |
| latest_test_version =
license = Proprietary |
| latest_test_date =
website = [http://www.qnx.com www.qnx.com] |
| marketing_target = [[Embedded system]]s
| programmed_in =
| prog_language =
| language =
| updatemodel =
| package_manager = Able to use [[Pkgsrc]] framework from NetBSD project
| supported_platforms = Current: [[x86-64]], [[ARM32]], [[ARM64]]<br>Former: [[MIPS architecture|MIPS]], [[PowerPC]], [[SuperH|SH-4]], [[StrongARM]], [[XScale]]
| kernel_type = [[RTOS]] ([[microkernel]])
| userland = [[POSIX]]
| ui =
| license = [[Proprietary software|Proprietary]]
| website = {{URL|https://blackberry.qnx.com/}}
| date = July 2014
}}
}}
'''QNX''' (pronounced either Q-N-X or Q-nix) is a commercial [[POSIX]]-compliant [[Unix-like]] [[real-time operating system]], aimed primarily at the [[embedded system]]s market. It is probably the most successful [[microkernel]] [[operating system]].


'''QNX''' ({{IPAc-en|ˌ|k|juː|_|ˌ|ɛ|n|_|ˈ|ɛ|k|s}} or {{IPAc-en|ˈ|k|juː|n|ᵻ|k|s}}) is a commercial [[Unix-like]] [[real-time operating system]], aimed primarily at the [[embedded system]]s market.
== Description ==
As a microkernel-based OS, QNX is based on the idea of running most of the OS in the form of a number of small tasks, known as ''servers''. This differs from more traditional monolithic [[Kernel (computers)|kernels]], in which the operating system is a single very large program comprised of a huge number of "parts" with special abilities. In the case of QNX, the use of a microkernel allows users (developers) to turn off any functionality they do not require without having to change the OS itself; instead, those servers are simply not run.


The product was originally developed in the early 1980s by [[Canada|Canadian]] company Quantum Software Systems, later renamed QNX Software Systems.
The system is quite small, fitting in a minimal fashion on a single floppy, and is considered to be both very fast and fairly "complete."


{{As of|2022}}, it is used in a variety of devices including cars,<ref name="tc-dec2014"/> medical devices, program logic controllers, robots, trains, and more.
QNX Neutrino (2001) has been ported to a number of platforms and now runs on practically any modern CPU that is used in the embedded market. This includes the [[x86]] family, [[MIPS architecture|MIPS]], [[PowerPC]], [[SuperH|SH-4]] and the closely related family of [[ARM architecture|ARM]], [[StrongARM]] and [[xScale]] CPUs.

A version for non-commercial use can be downloaded for free from the company web site.


== History ==
== History ==
{{prose|section|date=April 2022}}
Gordon Bell and Dan Dodge, students at the [[University of Waterloo]] in 1980, both took a standard [[computer science]] course in operating system design, in which the students constructed a basic real-time kernel. Both were convinced there was a commercial need for such a system, and moved to [[Kanata, Ontario]], (a high-tech area outside [[Ottawa]]) to start '''Quantum Software Systems''' that year. In 1982 the first version, '''QNX''', was released for the [[Intel 8088]] [[Central processing unit|CPU]].


[[Gordon Bell (QNX)|Gordon Bell]] and [[Dan Dodge]], both students at the [[University of Waterloo]] in 1980, took a course in real-time operating systems, in which the students constructed a basic real-time microkernel and user programs. Both were convinced there was a commercial need for such a system, and moved to the high-tech planned community [[Kanata, Ontario]], to start Quantum Software Systems that year. In 1982, the first version of QUNIX was released for the [[Intel 8088]] CPU. In 1984, Quantum Software Systems renamed QUNIX to QNX in an effort to avoid any trademark infringement challenges.
One of QNX's first widespread uses was in the non-embedded world, when it was selected as the operating system for the [[Ontario]] education system's own computer design, the [[Unisys ICON]]. Over the years QNX was used mostly for "larger" projects, as its 44k kernel was too large to fit inside the single-chip computers of the era. The system garnered an enviable reputation for reliability and found itself in use running machinery in a number of industrial applications.


One of the first widespread uses of the QNX real-time OS (RTOS) was in the nonembedded world when it was selected as the operating system for the [[Ontario]] education system's own computer design, the [[ICON (microcomputer)|Unisys ICON]]. Over the years QNX was used mostly for larger projects, as its 44k kernel was too large to fit inside the one-chip computers of the era. The system garnered a reputation for reliability{{Citation needed|date=July 2014}} and became used in running machinery in many industrial applications.
In the mid-[[1990s]], Quantum realized that the market was rapidly moving towards the POSIX model and decided to rewrite the kernel to be much more compatible at a lower level. The result was '''QNX 4'''.
This was available with an embeddable [[GUI]] called '''Photon microGUI''' as well as a QNX version of the [[X Window System]]. QNX 4 made porting Unix software much easier and removed many of the quirks of the earlier version.


In the late-1980s, Quantum realized that the market was rapidly moving towards the Portable Operating System Interface ([[POSIX]]) model and decided to rewrite the kernel to be much more compatible at a low level. The result was QNX 4. During this time [[Patrick Hayden (scientist)|Patrick Hayden]], while working as an intern, along with Robin Burgener (a full-time employee at the time), developed a new windowing system. This patented<ref name="patent"/> concept was developed into the embeddable [[graphical user interface]] (GUI) named the QNX Photon microGUI. QNX also provided a version of the [[X Window System]].
Toward the end of the 1990s they decided to model a new version on [[Linux]] as much as possible, while retaining the microkernel architecture. This resulted in '''QNX Neutrino''', which was released in 2001. This version typically ships with Momentics, an Integrated Development Environment(IDE) based on the Eclipse IDE, Various [[GNU]] tools, and [[internet]] software including the Voyager web browser and server.
The company also renamed itself '''QNX Software Systems''' in the early 1990s to eliminate confusion with other companies, primarily with the hard drive manufacturer of the same name.


To demonstrate the OS's capability and relatively small size, in the late 1990s QNX released a demo image that included the POSIX-compliant QNX 4 OS, a full graphical user interface, graphical text editor, TCP/IP networking, web browser and web server that all fit on a bootable 1.44&nbsp;[[Megabyte|MB]] [[floppy disk]] for the 386 PC.<ref name="demoannounce"/><ref name="demodisk"/>
Neutrino was slated to re-appear on the desktop as the basis of a new [[Amiga]] operating system. This idea apparently died after management changed the goals of the "new" Amiga.


Toward the end of the 1990s, the company, then named QNX Software Systems, began work on a new version of QNX, designed from the ground up to be [[symmetric multiprocessing]] (SMP) capable, and to support all current [[POSIX]] [[application programming interface]]s (APIs) and any new POSIX APIs that could be anticipated while still retaining the microkernel architecture. This resulted in QNX Neutrino, released in 2001.
The former name was '''Qunix''', changed to '''QNX''' due to [[trademark]] issues.


Along with the Neutrino kernel, QNX Software Systems became a founding member of the [[Eclipse (software)|Eclipse]] ([[integrated development environment]]) consortium. The company released a suite of Eclipse [[Plug-in (computing)|plug-ins]] packaged with the Eclipse workbench in 2002, and named QNX Momentics Tool Suite.
== Competitors==
Some important competitors in the embedded market are [[VxWorks]], [[Linux]], [[THEOS]], [[Windows CE]], and [[OS-9]].


In 2004, the company announced it had been sold to [[Harman International]] Industries. Before this acquisition, QNX software was already widely used in the automotive industry for [[telematics]] systems. Since the purchase by Harman, QNX software has been designed into over 200 different [[automobile]] makes and models, in telematics systems, and in infotainment and navigation units.{{Citation needed|date=July 2014}} The QNX CAR Application Platform was running in over 20 million vehicles as of mid-2011.<ref name="qnxcar"/> The company has since released several [[middleware]] products including the QNX Aviage Multimedia Suite, the QNX Aviage Acoustic Processing Suite and the QNX HMI Suite.
==External links==
*[http://www.qnx.com/ QNX Software]
*[http://www.qnxzone.com/ QNXZone]
*[http://www.openqnx.com/ QNX User Community]
*[http://www.sf.net/projects/openqnx Open source applications]


The microkernels of [[Cisco Systems]]' [[IOS-XR]] (ultra high availability IOS, introduced 2004)<ref name="QNXDel"/><ref name="cisco-ios"/> and [[IOS Software Modularity]] (introduced 2006)<ref name="IOSSM"/> are based on QNX.
[[Category:Unix]]
[[Category:Computing platforms]]
[[Category:Operating systems]]


In September 2007, QNX Software Systems announced the availability of some of its [[source code]].<ref name="qpr-source"/>
[[ca:QNX]]

[[de:QNX (Betriebssystem)]]
On April 9, 2010, [[BlackBerry Limited|Research In Motion]] (later renamed to [[BlackBerry Limited]]) announced they would acquire QNX Software Systems from Harman International Industries.<ref name="QNXtoRIM"/> On the same day, QNX source code access was restricted from the public and hobbyists.<ref name="restrictedsource"/>
[[es:QNX]]

[[fr:QNX]]
In September 2010, the company announced a [[tablet computer]], the [[BlackBerry PlayBook]], and a new operating system [[BlackBerry Tablet OS]] based on QNX to run on the tablet.<ref name="playbook_pressrelease"/>
[[hu:QNX]]

[[pl:QNX]]
On October 18, 2011, Research In Motion announced "BBX",<ref name="engadget"/> which was later renamed ''[[BlackBerry 10]]'', in December 2011.<ref name="guardian-dec20112"/> Blackberry 10 devices build upon the BlackBerry PlayBook QNX based operating system for touch devices, but adapt the user interface for [[smartphone]]s using the [[Qt (software)|Qt]] based Cascades Native User-Interface framework.
[[pt:QNX]]

[[fi:QNX]]
At the Geneva Motor Show, Apple demonstrated [[CarPlay]] which provides an [[iOS]]-like user interface to head units in compatible vehicles. Once configured by the automaker, QNX can be programmed to hand off its display and some functions to an Apple CarPlay device.<ref name="apple-carplay"/><ref name="zdnet-apple"/>
[[zh:QNX]]

On December 11, 2014, [[Ford Motor Company]] stated that it would replace [[Windows Embedded Automotive|Microsoft Auto]] with QNX.<ref name="tc-dec2014"/>

In January 2017, QNX announced the upcoming release of its SDP 7.0, with support for Intel and ARM [[32-bit computing|32-]] and [[64-bit computing|64-bit]] platforms, and support for [[C++14]]. It was released in March 2017.<ref name="QNXSDP70"/>

In December 2023, QNX released QNX SDP 8.0 which is powered by a next generation microkernel with support for the latest Intel and ARM [v8 and v9] 64 bit platforms, GCC12 based toolchain and a QNX toolkit for [[Visual Studio Code]].<ref name= "QNX8.0"/>

== Technology ==

As a [[microkernel]]-based OS, QNX is based on the idea of running most of the [[operating system]] [[Kernel (operating system)|kernel]] in the form of a number of small tasks, named Resource Managers. This differs from the more traditional [[monolithic kernel]], in which the operating system kernel is one very large program composed of a huge number of parts, with special abilities. In the case of QNX, the use of a microkernel allows users (developers) to turn off any functions they do not need without having to change the OS. Instead, such services will simply not run.

The QNX kernel, <code>procnto</code> (also name of the binary executable program for the QNX Neutrino ('nto') process ('proc') itself), contains only [[Scheduling (computing)|CPU scheduling]], [[interprocess communication]], [[interrupt]] redirection and timers. Everything else runs as a user process, including a special process known as <code>proc</code> which performs process creation and [[memory management]] by operating in conjunction with the [[microkernel]]. This is made possible by two key mechanisms: subroutine-call type interprocess communication, and a [[boot loader]] which can load an image containing the kernel and any desired set of user programs and shared libraries. There are no [[device drivers]] in the kernel. The network stack is based on [[NetBSD]] code.<ref name="core-64"/> Along with its support for its own, native, device drivers, QNX supports its legacy, ''io-net manager'' server, and the network drivers ported from NetBSD.<ref name="net-wiki"/>

QNX interprocess communication consists of sending a message from one process to another and waiting for a reply. This is a single operation, called <code>MsgSend</code>. The message is copied, by the kernel,{{Citation needed|date=June 2014}} from the address space of the sending process to that of the receiving process. If the receiving process is waiting for the message, control of the CPU is transferred at the same time, without a pass through the CPU scheduler. Thus, sending a message to another process and waiting for a reply does not result in "losing one's turn" for the CPU. This tight integration between message passing and CPU scheduling is one of the key mechanisms that makes QNX message passing broadly usable. Most [[Unix]] and [[Linux]] interprocess communication mechanisms lack this tight integration, although a [[user space]] implementation of QNX-type messaging for Linux [[SIMPL|does exist]]. Mishandling of this subtle issue is a primary reason for the disappointing performance of some other microkernel systems such as early versions of [[Mach (kernel)|Mach]].{{Citation needed|date=January 2012}} The recipient process need not be on the same physical machine.

All I/O operations, file system operations, and network operations were meant to work through this mechanism, and the data transferred was copied during message passing. Later versions of QNX reduce the number of separate processes and integrate the network stack and other function blocks into single applications for performance reasons.

Message handling is prioritized by [[thread (computer science)|thread]] priority. Since I/O requests are performed using message passing, high priority threads receive I/O service before low priority threads, an essential feature in a [[hard real-time]] system.

The boot loader is the other key component of the minimal microkernel system. Because user programs can be built into the boot image, the set of device drivers and support libraries needed for startup need not be, and are not, in the kernel. Even such functions as program loading are not in the kernel, but instead are in shared user-space libraries loaded as part of the boot image. It is possible to put an entire boot image into [[Read-only memory|ROM]], which is used for diskless embedded systems.

Neutrino supports [[symmetric multiprocessing]] and [[processor affinity]], called bound multiprocessing (BMP) in QNX terminology. BMP is used to improve cache hitting and to ease the migration of non-SMP safe applications to multi-processor computers.

Neutrino supports strict priority-preemptive scheduling and [[Adaptive Partition Scheduler|adaptive partition scheduling]] (APS). APS guarantees minimum CPU percentages to selected groups of threads, even though others may have higher priority. The adaptive partition scheduler is still strictly priority-preemptive when the system is underloaded. It can also be configured to run a selected set of critical threads strictly [[Real-time computing|real time]], even when the system is overloaded.

The QNX operating system also contained a web browser known as 'Voyager'.<ref>{{Cite web|url=http://www.qnx.com/products/middleware/graphics/voyager.html|title=QNX Neutrino RTOS – Embedded OS &#124; BlackBerry QNX &#124; BlackBerry QNX}}</ref>

Due to its [[microkernel]] architecture QNX is also a [[distributed operating system]]. [[Dan Dodge]] and [[Peter van der Veen]] hold {{US patent|6697876|U.S. Patent 6,697,876: Distributed kernel operating system|src=uspto}} based on the QNX operating system's distributed processing features known commercially as Transparent Distributed Processing. This allows the QNX kernels on separate devices to access each other's system services using effectively the same communication mechanism as is used to access local services.{{primary source inline|date=January 2024}}

== Releases ==

{| class="wikitable"
|+ QNX RTOS History<ref name="Unix history">{{cite web |author-last=Lévénez |author-first=Éric |title=UNIX History |website=levenez.com |date=May 1, 2011 |url=http://www.levenez.com/unix/ |access-date=May 18, 2011}}</ref>
! Version
! Date
! Distribution medium
! Notes
|-
|
| 1981
|
| '''QUNIX''' Founded.
|-
| Beta
| 1983
|
| As '''QNX Beta'''
|-
| 1.0
| 1984
|
|
|-
| 2.0
| 1987
|
| Elements of [[4.3BSD]] like [[Internet protocol suite|TCP/IP]] and [[Point-to-Point Protocol|PPP]] merged into '''QNX 2.0'''.
|-
| 2.21
| 1989
|
| '''QNX 2.21'''
|-
| 4.0
| 1990
|
| '''QNX 4.0'''
|-
| 4.1
| 1994
|
| Elements of 4.4BSD into '''QNX 4.1'''
|-
| 4.2
| 1995
|
| '''QNX 4.2'''
|-
| 4.22
| 1995
|
| '''QNX 4.22'''
|-
| 4.24
| 1995
|
| QNX/Neutrino 1.0 is forked from '''QNX 4.24'''
|-
| 4.25
| 1997
|
| '''QNX 4.25''' continues after fork with QNX/Neutrino 1.0.
|}

{| class="wikitable"
|+ QNX/Neutrino Microkernel history—Forked from QNX 4.24 in 1996.
! Release
! Date
! Notes
|-
| 1.0
| 1996
| '''QNX/Neutrino 1.0''' as forked from QNX 4.24
|-
| 2.0
| 1998
| '''QNX/Neutrino 2.0'''
|-
| 2.10
| 1999
| '''QNX/Neutrino 2.10''' (QRTP)
|-
| 6
| January 18, 2001
| '''QNX RTOS 6'''
|-
| 6.1.0
| 2001
| '''QNX RTOS 6'''
|-
| 6.1.0 (patch A)
| September 28, 2001
|
|-
| 6.2
| June 4, 2002
| '''QNX 6.2 (Momentics)'''
|-
| 6.2 (patch A)
| October 18, 2002
| '''QNX 6.2'''
|-
| 6.2.1
| February 18, 2003
| '''QNX 6.2.1 (Momentics)'''
|-
| 6.3
| June 3, 2004
| '''QNX 6.3'''
|-
|6.3.0 SP1
|{{dunno}}
|
|-
|6.3.0 SP2
|{{dunno}}
|
|-
|6.3.0 SP3/<br>OS 6.3.2
|{{dunno}}
|
|-
|6.3.2
| August 16, 2006{{r|QNX_6.3.2_rel}}
|
|-
| 6.4.0
| October 30, 2008
| '''QNX Neutrino RTOS 6.4.0'''
|-
| 6.4.1
| May 2009
| '''QNX Neutrino RTOS 6.4.1'''
|-
| 6.5.0
| July 2010
| '''QNX Neutrino RTOS 6.5.0''' is forked to produce BBX,<br />as announced on October 18, 2011, and later previewed,<br />named "[[BlackBerry 10]] OS" on May 1, 2012.
|-
| 6.5 SP1
| July 11, 2012
| '''QNX Neutrino RTOS 6.5 SP1'''
|-
| 6.6
| February 28, 2014
| '''QNX 6.6'''
|-
| 7.0
| January 4, 2017
| '''QNX SDP 7.0''', first version with 64-bit support
|-
| 7.1
| July 23, 2020
| '''QNX SDP 7.1'''
|-
| 8.0
| December 2023
| '''QNX SDP 8.0'''{{r|QNX_8.0_rel}}
|}

== Uses ==

The [[BlackBerry PlayBook]] [[tablet computer]] designed by BlackBerry uses [[BlackBerry Tablet OS|a version of QNX]] as the primary operating system. The [[BlackBerry 10]] operating system is also based on QNX.

QNX is also used in car infotainment systems with many major car makers offering variants that include an embedded QNX architecture. It is supported by popular [[Transport Layer Security|SSL/TLS]] libraries such as [[wolfSSL]].<ref name="wolfssl"/>

Since the introduction of its "Safe Kernel 1.0" in 2010, QNX was projected and used subsequently in automated drive or [[Advanced driver-assistance systems|ADAS]] systems for automotive projects that require a [[functional safety]] certified RTOS. QNX provides this with its QNX OS for Safety products.<ref>{{cite web|url=https://blackberry.qnx.com/en/software-solutions/embedded-software/rail-safety/qnx-os-for-safety|title=QNX OS for Safety}}</ref>

QNX Neutrino (2001) has been [[Porting|ported]] to a number of platforms and now runs on practically any modern [[central processing unit]] (CPU) family that is used in the embedded market. This includes the [[PowerPC]], [[x86]], [[MIPS architecture|MIPS]], [[SuperH|SH-4]], and the closely interrelated group of [[ARM architecture|ARM]], [[StrongARM]], and [[XScale]].

== Licensing ==

QNX offers a license for noncommercial and academic users.<ref name="qnx-nto1"/> Noncommercial license requests are usually refused.{{citation needed|date=April 2024}} Blackberry website does not have clear instructions on how to request noncommercial license. When a noncommercial license is requested, it is refused by Blackberry Sales citing license availability being restricted to QNX clients or companies working with QNX clients. In January 2024, BlackBerry introduced QNX Everywhere to make QNX more accessible to Hobbyists. QNX Everywhere has not been made publicly accessible yet.

== Community ==

* ''OpenQNX'' is a QNX Community Portal established and run independently. An IRC channel and Newsgroups access via web is available. Diverse industries are represented by the developers on the site.<ref name="oq-announce"/>
* ''Foundry27'' is a web-based QNX community established by the company. It serves as a hub to QNX Neutrino development where developers can register, choose the license, and get the source code and related toolkit of the RTOS.<ref name="qpr-foundry27"/>

== See also ==

* [[Comparison of operating systems]]
* [[Android Auto]]
* [[Android Automotive]]
* [[Automotive Grade Linux]]
* [[CarPlay]]
* [[Ford Sync]]
* [[Windows Embedded Automotive]]
* [[OpenHarmony]]
* [[HarmonyOS|HarmonyOS NEXT]]

== References ==

{{reflist|30em|refs=
<ref name="tc-dec2014">{{cite news |url=https://techcrunch.com/2014/12/11/ford-ditches-microsoft-for-qnx-in-latest-in-vehicle-tech-platform/ |title=Ford Ditches Microsoft For QNX In Latest In-Vehicle Tech Platform |date=December 11, 2014 |first=Matt |last=Burns |work=[[TechCrunch]] |access-date=February 26, 2015}}</ref>
<ref name="QNXtoRIM">{{cite news | url = https://www.theglobeandmail.com/technology/rim-to-buy-qnx-software/article4314576/ | title = RIM to buy QNX Software | agency = [[The Canadian Press]] | newspaper = [[The Globe and Mail]] | date = 9 April 2010 | access-date = 2010-04-09 | location=Toronto}}</ref>
<ref name="demoannounce">{{cite web |last=Hildebrand |first=Dan |date=6 June 1997 |url=https://marc.info/?l=freebsd-chat&m=103030933111004 |title=Think Small. (The 1.44M Web Challenge) |website=marc.info }}</ref>
<ref name="demodisk">{{cite web |url=http://www.qnx.com/demodisk/how.html |title=How we did it! |access-date=3 August 2020 |archive-url=https://web.archive.org/web/19991128112050/http://www.qnx.com/demodisk/how.html |archive-date=28 November 1999}}</ref>
<ref name="qnx-nto1">{{cite web |url=http://www.qnx.com/download/download.html?dlc=proc&newsearch=yes&searchme=non-commercial&p=1&sort=bydate&sorttype=desc&searchdate=alltime |title=QNX Neutrino Realtime Operating System |date=2010-07-15 |website=QNX |access-date=2012-10-15}}</ref>
<ref name="wolfssl">{{Cite web |author=<!--Not stated--> |url=https://www.wolfssl.com/wolfssl-build-sizes-for-the-qnx-embedded-rtos/|title=wolfSSL Build Sizes for the QNX Embedded RTOS |date=17 September 2010 |access-date=2019-02-13 |website=wolfSSL}}</ref>
<ref name="patent">{{US patent|5745759|US5745759}}</ref>
<ref name="qnxcar">QNX CAR http://www.qnx.com/products/qnxcar/</ref>
<ref name="QNXDel">{{cite web | url = http://www.qnx.com/news/pr_1074_1.html | title = QNX Delivers Extremely Reliable Microkernel for Massively Scalable Routing System | author = QNX Staff | date = 2004-08-17 | access-date = 2012-03-16}}</ref>
<ref name="cisco-ios">{{cite web|url=http://www.cisco.com/en/US/products/ps5763/products_tech_note09186a0080772675.shtml#a2|title=CRS-1 and IOS XR Operational Best Practices|website=Cisco}}</ref>
<ref name="IOSSM">{{cite web | url = http://www.velocityreviews.com/forums/t372212-which-os-is-behind-ios.html | title = Which OS is behind IOS? | author = Brad Reese- BradReese.Com | date = 2006-09-26 | access-date = 2012-03-16 | archive-date = 2011-12-22 | archive-url = https://web.archive.org/web/20111222051318/http://www.velocityreviews.com/forums/t372212-which-os-is-behind-ios.html | url-status = dead }}</ref>
<ref name="qpr-source">{{cite web |url=http://www.qnx.com/news/pr_2471_1.html |title=QNX Publishes Neutrino Source Code and Opens Development Process |last=Leroux |first=Paul |date=12 September 2007 |website=www.qnx.com }}</ref>
<ref name="restrictedsource">{{cite web|url=http://community.qnx.com/sf/wiki/do/viewPage/projects.community/wiki/UpdatedQNXSourceAccessPolicyFAQ|title=foundry27: View Wiki Page: UpdatedQNXSourceAccessPolicyFAQ|website=community.qnx.com}}</ref>
<ref name="playbook_pressrelease">{{cite web|url=http://www.marketwire.com/press-release/RIM-Unveils-The-BlackBerry-PlayBook-NASDAQ-RIMM-1325727.htm|title=RIM Unveils The BlackBerry PlayBook|type=official press release|date=September 27, 2010}}</ref>
<ref name="engadget">{{cite web |last=Molen |first=Brad |date=18 October 2011 |url=https://www.engadget.com/2011/10/18/research-in-motion-announces-bbx-combines-the-best-of-blackber/ |title=Research in Motion announces BBX, 'combines the best of BlackBerry and QNX' |website=Engadget |access-date=20 January 2013}}</ref>
<ref name="guardian-dec20112">{{cite news|url=https://www.theguardian.com/technology/2011/dec/07/rim-bbx-os-injunction?newsfeed=true |title=BlackBerry-maker RIM forced to drop BBX name for new software|newspaper=Guardian|access-date=2013-01-20|location=London|first=Charles|last=Arthur|date=2011-12-07}}</ref>
<ref name="apple-carplay">{{cite news|url=http://business.financialpost.com/2014/03/03/apple-inc-carplay-ios-monday/ |title=Apple Inc CarPlay brings iPhone features to GM, BMW, Ford and other car dashboards |newspaper=Financial Post|date=3 March 2014 |access-date=2014-03-28|last1=Hartley |first1=Matt }}</ref>
<ref name="zdnet-apple">{{cite news|url=http://www.zdnet.com/blackberrys-qnx-why-its-so-valuable-to-apple-google-auto-industry-7000027169/ |title=BlackBerry's QNX: Why it's so valuable to Apple, Google, auto industry |work=ZDNet|access-date=2014-10-27}}</ref>
<ref name="QNXSDP70">{{Cite news |url=http://www.qnx.com/content/qnx/de/news/release/2017/63881.html |title=BlackBerry QNX Launches its Most Advanced and Secure Embedded Software Platform for Autonomous Drive and Connected Cars |date=2017-01-04}}</ref>
<ref name="core-64">{{cite web|title=Core Networking 6.4: Neutrino's Next Gen Networking Stack and Foundry27|url=http://community.qnx.com/sf/docman/do/downloadDocument/projects.networking/docman.root/doc1280}}</ref>
<ref name="net-wiki">{{cite web|url=http://community.qnx.com/sf/wiki/do/viewPage/projects.networking/wiki/Drivers_wiki_page|title=foundry27: View Wiki Page: Drivers_wiki_page|website=community.qnx.com}}</ref>
<ref name="oq-announce">OpenQNX Community Portal: [http://www.openqnx.com/node/1 Announce]</ref>
<ref name="qpr-foundry27">QNX Press Releases: [http://www.qnx.com/news/pr_2471_2.html Foundry27]</ref>

<ref name=QNX_8.0_rel>{{cite web
|url = https://www.qnx.com/developers/articles/rel_7063_0.html
|title = QNX® Software Development Platform (SDP) 8.0: Release Notes
|date = 11 December 2023
|language = en}}</ref>

<ref name=QNX8.0>{{cite web
|url = https://blackberry.qnx.com/en/products/foundation-software/qnx-software-development-platform
|title = QNX® Software Development Platform (SDP) 8.0
|date = 11 December 2023
|language = en}}</ref>

<ref name=QNX_6.3.2_rel>{{cite web
|url = https://www.qnx.com/developers/articles/rel_1629_10.html
|title = QNX® Neutrino® Core OS 6.3.2 Release Notes
|date = 16 August 2006
|language = en}}</ref>
}}

== Further reading ==

* {{cite journal |author=Dan Hildebrand |title=An Architectural Overview of QNX |journal=Proceedings of the Workshop on Micro-kernels and Other Kernel Architectures |year=1992 |url=http://portal.acm.org/citation.cfm?id=759105&dl=ACM&coll=&CFID=15151515&CFTOKEN=6184618 |pages=113–126 |isbn=1-880446-42-1}}

== External links ==
{{commons category}}
* {{Official website|www.qnx.com}}
* {{Curlie|Computers/Software/Operating_Systems/Realtime/QNX}}
* [http://developer.blackberry.com/blackberry_world/ Development for QNX phones]
* [http://community.qnx.com/ Foundry27]
* [http://www.openqnx.com/ QNX User Community]
* [http://www.sf.net/projects/openqnx Open source applications]
* [http://www.aresluna.org/guidebook/guis/qnx GUIdebook > GUIs > QNX]
* [http://www.itbusiness.ca/it/client/en/CDN/News.asp?id=40793 QNX used for Canadian Nuclear Power Plants]
* [http://qnx.projektas.lt/qnxdemo/qnx_demo_disk.htm QNX demo floppy disk]

{{Research In Motion}}
{{Real-time operating systems}}
{{Unix}}
{{Microkernel}}
{{Mobile operating systems}}
{{Distributed operating systems}}
{{Authority control}}

[[Category:1980 establishments in Ontario]]
[[Category:ARM operating systems]]
[[Category:BlackBerry Limited]]
[[Category:Computing platforms]]
[[Category:Distributed operating systems]]
[[Category:Embedded operating systems]]
[[Category:Information technology companies of Canada]]
[[Category:Lightweight Unix-like systems]]
[[Category:Microkernel-based operating systems]]
[[Category:Microkernels]]
[[Category:Mobile operating systems]]
[[Category:Proprietary operating systems]]
[[Category:Real-time operating systems]]
[[Category:Tablet operating systems]]
[[Category:Software companies established in 1980]]

Latest revision as of 19:08, 28 April 2024

QNX
The default desktop in QNX 6.4.1
DeveloperBlackBerry (formerly QNX Software Systems)
OS familyUnix-like
Working stateCurrent
Source modelClosed source
Initial release1982; 42 years ago (1982)
Latest release8.0 / December 2023; 5 months ago (2023-12)
Marketing targetEmbedded systems
Package managerAble to use Pkgsrc framework from NetBSD project
PlatformsCurrent: x86-64, ARM32, ARM64
Former: MIPS, PowerPC, SH-4, StrongARM, XScale
Kernel typeRTOS (microkernel)
UserlandPOSIX
LicenseProprietary
Official websiteblackberry.qnx.com

QNX (/ˌkjuː ˌɛn ˈɛks/ or /ˈkjuːnɪks/) is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems market.

The product was originally developed in the early 1980s by Canadian company Quantum Software Systems, later renamed QNX Software Systems.

As of 2022, it is used in a variety of devices including cars,[1] medical devices, program logic controllers, robots, trains, and more.

History[edit]

Gordon Bell and Dan Dodge, both students at the University of Waterloo in 1980, took a course in real-time operating systems, in which the students constructed a basic real-time microkernel and user programs. Both were convinced there was a commercial need for such a system, and moved to the high-tech planned community Kanata, Ontario, to start Quantum Software Systems that year. In 1982, the first version of QUNIX was released for the Intel 8088 CPU. In 1984, Quantum Software Systems renamed QUNIX to QNX in an effort to avoid any trademark infringement challenges.

One of the first widespread uses of the QNX real-time OS (RTOS) was in the nonembedded world when it was selected as the operating system for the Ontario education system's own computer design, the Unisys ICON. Over the years QNX was used mostly for larger projects, as its 44k kernel was too large to fit inside the one-chip computers of the era. The system garnered a reputation for reliability[citation needed] and became used in running machinery in many industrial applications.

In the late-1980s, Quantum realized that the market was rapidly moving towards the Portable Operating System Interface (POSIX) model and decided to rewrite the kernel to be much more compatible at a low level. The result was QNX 4. During this time Patrick Hayden, while working as an intern, along with Robin Burgener (a full-time employee at the time), developed a new windowing system. This patented[2] concept was developed into the embeddable graphical user interface (GUI) named the QNX Photon microGUI. QNX also provided a version of the X Window System.

To demonstrate the OS's capability and relatively small size, in the late 1990s QNX released a demo image that included the POSIX-compliant QNX 4 OS, a full graphical user interface, graphical text editor, TCP/IP networking, web browser and web server that all fit on a bootable 1.44 MB floppy disk for the 386 PC.[3][4]

Toward the end of the 1990s, the company, then named QNX Software Systems, began work on a new version of QNX, designed from the ground up to be symmetric multiprocessing (SMP) capable, and to support all current POSIX application programming interfaces (APIs) and any new POSIX APIs that could be anticipated while still retaining the microkernel architecture. This resulted in QNX Neutrino, released in 2001.

Along with the Neutrino kernel, QNX Software Systems became a founding member of the Eclipse (integrated development environment) consortium. The company released a suite of Eclipse plug-ins packaged with the Eclipse workbench in 2002, and named QNX Momentics Tool Suite.

In 2004, the company announced it had been sold to Harman International Industries. Before this acquisition, QNX software was already widely used in the automotive industry for telematics systems. Since the purchase by Harman, QNX software has been designed into over 200 different automobile makes and models, in telematics systems, and in infotainment and navigation units.[citation needed] The QNX CAR Application Platform was running in over 20 million vehicles as of mid-2011.[5] The company has since released several middleware products including the QNX Aviage Multimedia Suite, the QNX Aviage Acoustic Processing Suite and the QNX HMI Suite.

The microkernels of Cisco Systems' IOS-XR (ultra high availability IOS, introduced 2004)[6][7] and IOS Software Modularity (introduced 2006)[8] are based on QNX.

In September 2007, QNX Software Systems announced the availability of some of its source code.[9]

On April 9, 2010, Research In Motion (later renamed to BlackBerry Limited) announced they would acquire QNX Software Systems from Harman International Industries.[10] On the same day, QNX source code access was restricted from the public and hobbyists.[11]

In September 2010, the company announced a tablet computer, the BlackBerry PlayBook, and a new operating system BlackBerry Tablet OS based on QNX to run on the tablet.[12]

On October 18, 2011, Research In Motion announced "BBX",[13] which was later renamed BlackBerry 10, in December 2011.[14] Blackberry 10 devices build upon the BlackBerry PlayBook QNX based operating system for touch devices, but adapt the user interface for smartphones using the Qt based Cascades Native User-Interface framework.

At the Geneva Motor Show, Apple demonstrated CarPlay which provides an iOS-like user interface to head units in compatible vehicles. Once configured by the automaker, QNX can be programmed to hand off its display and some functions to an Apple CarPlay device.[15][16]

On December 11, 2014, Ford Motor Company stated that it would replace Microsoft Auto with QNX.[1]

In January 2017, QNX announced the upcoming release of its SDP 7.0, with support for Intel and ARM 32- and 64-bit platforms, and support for C++14. It was released in March 2017.[17]

In December 2023, QNX released QNX SDP 8.0 which is powered by a next generation microkernel with support for the latest Intel and ARM [v8 and v9] 64 bit platforms, GCC12 based toolchain and a QNX toolkit for Visual Studio Code.[18]

Technology[edit]

As a microkernel-based OS, QNX is based on the idea of running most of the operating system kernel in the form of a number of small tasks, named Resource Managers. This differs from the more traditional monolithic kernel, in which the operating system kernel is one very large program composed of a huge number of parts, with special abilities. In the case of QNX, the use of a microkernel allows users (developers) to turn off any functions they do not need without having to change the OS. Instead, such services will simply not run.

The QNX kernel, procnto (also name of the binary executable program for the QNX Neutrino ('nto') process ('proc') itself), contains only CPU scheduling, interprocess communication, interrupt redirection and timers. Everything else runs as a user process, including a special process known as proc which performs process creation and memory management by operating in conjunction with the microkernel. This is made possible by two key mechanisms: subroutine-call type interprocess communication, and a boot loader which can load an image containing the kernel and any desired set of user programs and shared libraries. There are no device drivers in the kernel. The network stack is based on NetBSD code.[19] Along with its support for its own, native, device drivers, QNX supports its legacy, io-net manager server, and the network drivers ported from NetBSD.[20]

QNX interprocess communication consists of sending a message from one process to another and waiting for a reply. This is a single operation, called MsgSend. The message is copied, by the kernel,[citation needed] from the address space of the sending process to that of the receiving process. If the receiving process is waiting for the message, control of the CPU is transferred at the same time, without a pass through the CPU scheduler. Thus, sending a message to another process and waiting for a reply does not result in "losing one's turn" for the CPU. This tight integration between message passing and CPU scheduling is one of the key mechanisms that makes QNX message passing broadly usable. Most Unix and Linux interprocess communication mechanisms lack this tight integration, although a user space implementation of QNX-type messaging for Linux does exist. Mishandling of this subtle issue is a primary reason for the disappointing performance of some other microkernel systems such as early versions of Mach.[citation needed] The recipient process need not be on the same physical machine.

All I/O operations, file system operations, and network operations were meant to work through this mechanism, and the data transferred was copied during message passing. Later versions of QNX reduce the number of separate processes and integrate the network stack and other function blocks into single applications for performance reasons.

Message handling is prioritized by thread priority. Since I/O requests are performed using message passing, high priority threads receive I/O service before low priority threads, an essential feature in a hard real-time system.

The boot loader is the other key component of the minimal microkernel system. Because user programs can be built into the boot image, the set of device drivers and support libraries needed for startup need not be, and are not, in the kernel. Even such functions as program loading are not in the kernel, but instead are in shared user-space libraries loaded as part of the boot image. It is possible to put an entire boot image into ROM, which is used for diskless embedded systems.

Neutrino supports symmetric multiprocessing and processor affinity, called bound multiprocessing (BMP) in QNX terminology. BMP is used to improve cache hitting and to ease the migration of non-SMP safe applications to multi-processor computers.

Neutrino supports strict priority-preemptive scheduling and adaptive partition scheduling (APS). APS guarantees minimum CPU percentages to selected groups of threads, even though others may have higher priority. The adaptive partition scheduler is still strictly priority-preemptive when the system is underloaded. It can also be configured to run a selected set of critical threads strictly real time, even when the system is overloaded.

The QNX operating system also contained a web browser known as 'Voyager'.[21]

Due to its microkernel architecture QNX is also a distributed operating system. Dan Dodge and Peter van der Veen hold U.S. Patent 6,697,876: Distributed kernel operating system based on the QNX operating system's distributed processing features known commercially as Transparent Distributed Processing. This allows the QNX kernels on separate devices to access each other's system services using effectively the same communication mechanism as is used to access local services.[non-primary source needed]

Releases[edit]

QNX RTOS History[22]
Version Date Distribution medium Notes
1981 QUNIX Founded.
Beta 1983 As QNX Beta
1.0 1984
2.0 1987 Elements of 4.3BSD like TCP/IP and PPP merged into QNX 2.0.
2.21 1989 QNX 2.21
4.0 1990 QNX 4.0
4.1 1994 Elements of 4.4BSD into QNX 4.1
4.2 1995 QNX 4.2
4.22 1995 QNX 4.22
4.24 1995 QNX/Neutrino 1.0 is forked from QNX 4.24
4.25 1997 QNX 4.25 continues after fork with QNX/Neutrino 1.0.
QNX/Neutrino Microkernel history—Forked from QNX 4.24 in 1996.
Release Date Notes
1.0 1996 QNX/Neutrino 1.0 as forked from QNX 4.24
2.0 1998 QNX/Neutrino 2.0
2.10 1999 QNX/Neutrino 2.10 (QRTP)
6 January 18, 2001 QNX RTOS 6
6.1.0 2001 QNX RTOS 6
6.1.0 (patch A) September 28, 2001
6.2 June 4, 2002 QNX 6.2 (Momentics)
6.2 (patch A) October 18, 2002 QNX 6.2
6.2.1 February 18, 2003 QNX 6.2.1 (Momentics)
6.3 June 3, 2004 QNX 6.3
6.3.0 SP1 ?
6.3.0 SP2 ?
6.3.0 SP3/
OS 6.3.2
?
6.3.2 August 16, 2006[23]
6.4.0 October 30, 2008 QNX Neutrino RTOS 6.4.0
6.4.1 May 2009 QNX Neutrino RTOS 6.4.1
6.5.0 July 2010 QNX Neutrino RTOS 6.5.0 is forked to produce BBX,
as announced on October 18, 2011, and later previewed,
named "BlackBerry 10 OS" on May 1, 2012.
6.5 SP1 July 11, 2012 QNX Neutrino RTOS 6.5 SP1
6.6 February 28, 2014 QNX 6.6
7.0 January 4, 2017 QNX SDP 7.0, first version with 64-bit support
7.1 July 23, 2020 QNX SDP 7.1
8.0 December 2023 QNX SDP 8.0[24]

Uses[edit]

The BlackBerry PlayBook tablet computer designed by BlackBerry uses a version of QNX as the primary operating system. The BlackBerry 10 operating system is also based on QNX.

QNX is also used in car infotainment systems with many major car makers offering variants that include an embedded QNX architecture. It is supported by popular SSL/TLS libraries such as wolfSSL.[25]

Since the introduction of its "Safe Kernel 1.0" in 2010, QNX was projected and used subsequently in automated drive or ADAS systems for automotive projects that require a functional safety certified RTOS. QNX provides this with its QNX OS for Safety products.[26]

QNX Neutrino (2001) has been ported to a number of platforms and now runs on practically any modern central processing unit (CPU) family that is used in the embedded market. This includes the PowerPC, x86, MIPS, SH-4, and the closely interrelated group of ARM, StrongARM, and XScale.

Licensing[edit]

QNX offers a license for noncommercial and academic users.[27] Noncommercial license requests are usually refused.[citation needed] Blackberry website does not have clear instructions on how to request noncommercial license. When a noncommercial license is requested, it is refused by Blackberry Sales citing license availability being restricted to QNX clients or companies working with QNX clients. In January 2024, BlackBerry introduced QNX Everywhere to make QNX more accessible to Hobbyists. QNX Everywhere has not been made publicly accessible yet.

Community[edit]

  • OpenQNX is a QNX Community Portal established and run independently. An IRC channel and Newsgroups access via web is available. Diverse industries are represented by the developers on the site.[28]
  • Foundry27 is a web-based QNX community established by the company. It serves as a hub to QNX Neutrino development where developers can register, choose the license, and get the source code and related toolkit of the RTOS.[29]

See also[edit]

References[edit]

  1. ^ a b Burns, Matt (December 11, 2014). "Ford Ditches Microsoft For QNX In Latest In-Vehicle Tech Platform". TechCrunch. Retrieved February 26, 2015.
  2. ^ US5745759
  3. ^ Hildebrand, Dan (6 June 1997). "Think Small. (The 1.44M Web Challenge)". marc.info.
  4. ^ "How we did it!". Archived from the original on 28 November 1999. Retrieved 3 August 2020.
  5. ^ QNX CAR http://www.qnx.com/products/qnxcar/
  6. ^ QNX Staff (2004-08-17). "QNX Delivers Extremely Reliable Microkernel for Massively Scalable Routing System". Retrieved 2012-03-16.
  7. ^ "CRS-1 and IOS XR Operational Best Practices". Cisco.
  8. ^ Brad Reese- BradReese.Com (2006-09-26). "Which OS is behind IOS?". Archived from the original on 2011-12-22. Retrieved 2012-03-16.
  9. ^ Leroux, Paul (12 September 2007). "QNX Publishes Neutrino Source Code and Opens Development Process". www.qnx.com.
  10. ^ "RIM to buy QNX Software". The Globe and Mail. Toronto. The Canadian Press. 9 April 2010. Retrieved 2010-04-09.
  11. ^ "foundry27: View Wiki Page: UpdatedQNXSourceAccessPolicyFAQ". community.qnx.com.
  12. ^ "RIM Unveils The BlackBerry PlayBook" (official press release). September 27, 2010.
  13. ^ Molen, Brad (18 October 2011). "Research in Motion announces BBX, 'combines the best of BlackBerry and QNX'". Engadget. Retrieved 20 January 2013.
  14. ^ Arthur, Charles (2011-12-07). "BlackBerry-maker RIM forced to drop BBX name for new software". Guardian. London. Retrieved 2013-01-20.
  15. ^ Hartley, Matt (3 March 2014). "Apple Inc CarPlay brings iPhone features to GM, BMW, Ford and other car dashboards". Financial Post. Retrieved 2014-03-28.
  16. ^ "BlackBerry's QNX: Why it's so valuable to Apple, Google, auto industry". ZDNet. Retrieved 2014-10-27.
  17. ^ "BlackBerry QNX Launches its Most Advanced and Secure Embedded Software Platform for Autonomous Drive and Connected Cars". 2017-01-04.
  18. ^ "QNX® Software Development Platform (SDP) 8.0". 11 December 2023.
  19. ^ "Core Networking 6.4: Neutrino's Next Gen Networking Stack and Foundry27".
  20. ^ "foundry27: View Wiki Page: Drivers_wiki_page". community.qnx.com.
  21. ^ "QNX Neutrino RTOS – Embedded OS | BlackBerry QNX | BlackBerry QNX".
  22. ^ Lévénez, Éric (May 1, 2011). "UNIX History". levenez.com. Retrieved May 18, 2011.
  23. ^ "QNX® Neutrino® Core OS 6.3.2 Release Notes". 16 August 2006.
  24. ^ "QNX® Software Development Platform (SDP) 8.0: Release Notes". 11 December 2023.
  25. ^ "wolfSSL Build Sizes for the QNX Embedded RTOS". wolfSSL. 17 September 2010. Retrieved 2019-02-13.
  26. ^ "QNX OS for Safety".
  27. ^ "QNX Neutrino Realtime Operating System". QNX. 2010-07-15. Retrieved 2012-10-15.
  28. ^ OpenQNX Community Portal: Announce
  29. ^ QNX Press Releases: Foundry27

Further reading[edit]

External links[edit]