Home » OS

QNX RTOS(Real Time Operating System)

2 February 2008 3 views One Comment

QNX (pronounced either Q-N- or Q-) is a commercial -compliant -like real-time , aimed primarily at the embedded systems market. As of September 12 2007, the of the QNX has been released for non-commercial use.

QNX RTOS

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 . This differs from the more traditional monolithic , in which the is a single 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 functionality they do not require without having to change the OS itself; instead, those are simply not run.

The is quite small, fitting in a minimal fashion on a single floppy, and is considered to be both very fast and fairly “complete.”

(2001) has been ported to a number of platforms and now runs on practically any modern that is used in the embedded market. This includes the , , , SH-4 and the closely related family of , StrongARM and xScale CPUs.

As of September 12, 2007, QNX offers a free license for non-commercial users.

History

Gordon Bell and Dan Dodge, students at the University of Waterloo in 1980, both took a standard science course in design, in which the students constructed a basic real-time . Both were convinced there was a commercial need for such a , and moved to Kanata, Ontario, (a high-tech area in the western part of Ottawa) to start Quantum Systems that year. In 1982 the first version, QNX, was released for the 8088 .

One of QNX’s first widespread uses was in the non-embedded world, when it was selected as the for the Ontario education ’s own design, the Unisys ICON. Over the years QNX was used mostly for “larger” projects, as its 44k was too large to fit inside the single- of the era. The garnered an enviable reputation for reliability and found itself in use running machinery in a number of industrial applications.

In the late-1980s, Quantum realized that the market was rapidly moving towards the model and decided to rewrite the to be much more compatible at a lower level. The result was QNX 4. During this time Patrick Hayden, while working as an intern, along with Robin Burgener (a full time QNX employee at the time), developed a new concept for a windowing  . This patented concept was developed into the embeddable named Photon microGUI. QNX also provided a version of the . Due to the interface, porting and packages to QNX became much easier.

Toward the end of the 1990s QNX began work on a completely new version of QNX, designed from the ground up to be SMP capable, as well as support all current APIs, and any new APIs that could be anticipated; but still retaining the microkernel architecture. This resulted in , which was released in 2001. Along with the Neutrino , QNX made a serious commitment to tooling, and became a founding member of the Eclipse consortium. QNX soon released a suite of Eclipse plug-ins packaged with the Eclipse workbench under the name Momentics.

In 2004 the announced it had been sold to Harman International Industries. Prior to the by Harman International, QNX was already widely used in the automotive industry for telematics systems. Since the purchase by Harman QNX has been designed into over 180 different automobile models.

On 12th of September 2007 QNX made a press release announcing the immediate of the code. [1]

’s IOS-XR ( high IOS), is based on QNX, as is IOS Modularity.

The QNX contains only 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 management by in conjunction with the microkernel. This is made possible by two key mechanisms - subroutine-call type interprocess communication, and a loader which can load an image containing not only the but any desired collection of user programs and libraries.

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 , from the space of the sending process to that of the receiving process. If the receiving process is waiting for the message, control of the is transferred at the same time, without a pass through the scheduler. Thus, sending a message to another process and waiting for a reply does not result in “losing one’s turn” for the . This tight integration between message passing and scheduling is one of the key mechanisms that makes QNX message passing broadly usable. Most and interprocess communication mechanisms lack this tight integration, although an implementation of QNX-type messaging for does exist. Mishandling of this subtle issue is a primary reason for the disappointing of some other microkernel systems.

Due to the microkernel architecture QNX is also a distributed . Dan Dodge and Peter van der Veen hold a patent based on the QNX ’s distributed processing features (known commercially as Transparent Distributed Processing).

All I/O operations, file operations, and 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 stack and other function into single applications for reasons. There are no device drivers in the .

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 .

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

Neutrino supports Symmetric Multiprocessing and Bound Multiprocessing(BMP), which is QNX’s term for being able to lock selected threads to selected CPUs. BMP is used to improve cache heating and to ease the migration of non-SMP safe applications to multi- .

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

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Related posts

One Comment »

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.