QNX

QNX

Infobox OS
name = QNX



caption = The QNX Floppy Demo
developer = QNX Software Systems / Harman International Industries
source_model = Closed source and Open source
kernel_type = Real-time Microkernel
supported_platforms = Intel 8088, x86, MIPS, PowerPC, SH-4, ARM, StrongARM, XScale
ui =
family = Unix-like Real-time operating systems
released = 1982
latest_release_version = 6.3.2
latest_release_date = September 28, 2006
latest_test_version =
latest_test_date =
marketing_target = Embedded systems
programmed_in =
prog_language =
language =
updatemodel =
package_manager =
working_state = Current
license = Proprietary
website = [http://www.qnx.com/ www.qnx.com]

QNX (pronounced either Q-N-X or Q-nix) is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems market. On September 12, 2007, the source of the QNX kernel was released for non-commercial use.

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 the more traditional monolithic kernel, in which the operating system 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 servers are simply not run.

The system is quite small, fitting in a minimal fashion on a single floppy. Fact|date=June 2008

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, PowerPC, SH-4 and the closely related family of ARM, StrongARM and XScale CPUs.

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

History

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 in the western part of Ottawa) to start Quantum Software Systems that year. In 1982 the first version, QNX, was released for the Intel 8088 CPU.

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.

In the late-1980s, 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. 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 US patent|5745759|windowing system. This patented concept was developed into the embeddable GUI named Photon microGUI. QNX also provided a version of the X Window System. Due to the POSIX interface, porting Unix and BSD 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 POSIX APIs, and any new POSIX APIs that could be anticipated; but still retaining the microkernel architecture. This resulted in QNX Neutrino, which was released in 2001. Along with the Neutrino kernel, 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 company announced it had been sold to Harman International Industries. Prior to the acquisition 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 availability of the source code. [QNX Press Releases: [http://www.qnx.com/news/pr_2471_1.html source code availability] ]

Cisco's IOS-XR (ultra high availability IOS), is based on QNX, as is IOS Software Modularity.

Technology

The QNX kernel 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 not only the kernel but any desired collection of user programs and shared libraries. There are no device drivers in the kernel. The network stack is based on NetBSD code [Core Networking 6.4: Neutrino’s Next Gen Networking Stack and Foundry27 [http://community.qnx.com/sf/docman/do/downloadDocument/projects.networking/docman.root/doc1280] ] . There are three variety of drivers supported: native, legacy "io-net" and drivers ported from NetBSD [Foundry27: Project Networking - Driver wiki page [http://community.qnx.com/sf/wiki/do/viewPage/projects.networking/wiki/Drivers_wiki_page] ] .

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, 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 an implementation of QNX-type messaging for Linux [http://sourceforge.net/projects/simpl/ does exist] . Mishandling of this subtle issue is a primary reason for the disappointing performance of some other microkernel systems. Fact|date=June 2008

Due to the microkernel architecture QNX is also a distributed operating system. Dan Dodge and Peter van der Veen hold a [http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html&r=2&f=G&l=50&co1=AND&d=PTXT&s1=%22QNX+Software+Systems%22.ASNM.&OS=AN/%22QNX+Software+Systems%22&RS=AN/%22QNX+Software+Systems%22 patent] based on the QNX operating system's distributed processing features (known commercially as Transparent Distributed Processing).

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, although seldom discussed, 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 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-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 realtime, even when the system is overloaded.

Foundry27

Foundry27, the new QNX community established by the company, will serve as a hub to QNX Neutrino development where developers can register, choose the license, and get the source code and the related toolkit of the RTOS. [QNX Press Releases: [http://www.qnx.com/news/pr_2471_2.html Foundry27] ]

Competitors

Some important competitors in the embedded market are LynxOS, VxWorks, Linux, eCos, ThreadX, Windows CE, RTEMS, and OS-9.

References

Bibliography

*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 |id=ISBN 1-880446-42-1 | url = http://portal.acm.org/citation.cfm?id=759105&dl=ACM&coll=&CFID=15151515&CFTOKEN=6184618 | pages=113–126

External links

* [http://www.qnx.com/ QNX Software]
* [http://community.qnx.com/sf/sfmain/do/home/ 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://www.qnx.org.ru/ QOR: Russian QNX Portal]
* [http://public.planetmirror.com/pub/qnx/demodisk/ QNX Demodisk mirror]
* [http://www.kpda.ru/faq/ Knowledge base of CBD BC]
* [http://sendreceivereply.wordpress.com/ Development Tips & Tricks]
* [http://www.krten.com/products.html QNX Books]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Look at other dictionaries:

  • QNX — Рабочий стол QNX 6 (Neutrino) по …   Википедия

  • QNX — Basisdaten Entwickler Gordon Bell, Dan Dodge, Research in Motion …   Deutsch Wikipedia

  • QNX — Famille Unix Type de noyau micro noyau État du projet en développement Plates formes i386, x86 64, ARM Licence propriétaire États des sources propriétaires …   Wikipédia en Français

  • QNX — Saltar a navegación, búsqueda QNX (pronunciado Q.N.X. o Q nix) es un sistema operativo de tiempo real basado en Unix que cumple con la norma POSIX. Es desarrollado principalmente para su uso en dispositivos empotrados. Desarrollado por QNX… …   Wikipedia Español

  • QNX —   [sprich Kjuhnix], ein von Unix abgeleitetes Echtzeitbetriebssystem für PCs und Embedded Systems, das von der kanadischen Firma QNX Software Systems Ltd. vertrieben wird. Es unterstützt Mehrbenutzerbetrieb, Multitasking, Ablaufplanung und… …   Universal-Lexikon

  • QNX — (pronunciado Q.N.X. o Q nix) es un sistema operativo de tiempo real basado en Unix que cumple con la norma POSIX. Es desarrollado principalmente para su uso en dispositivos embebidos. Desarrollado por QNX Software Systems empresa canadiense. Esta …   Enciclopedia Universal

  • QNX — ● np. ►SYSEX système d exploitation temps réel (RTOS) industriel utilisant un micronoyau. QNX est le nom de la boîte, mais on le confond généralement avec son produit principal. http://www.qnx.com …   Dictionnaire d'informatique francophone

  • QNX — UNIX Clone hauptsächlich für PC s (siehe http://www.qnx.com/) …   Acronyms

  • QNX — UNIX Clone hauptsächlich für PC s (siehe http://www.qnx.com/) …   Acronyms von A bis Z

  • QNX Software Systems — QNX Basisdaten Entwickler Gordon Bell, Dan Dodge Version …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”