qnx.pdf

  • Upload
    ravg10

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

  • 8/9/2019 qnx.pdf

    1/3

    QNX

    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 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 traditionalmonolithic 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 notrequire 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, and isconsidered to be both very fast and fairly "complete."

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

    XScale CPUs.

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

    HistoryGordon 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 ofOttawa) 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 44kkernel 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 anintern, along with Robin Burgener (a full time QNX employee at the time), developed a

  • 8/9/2019 qnx.pdf

    2/3

    new concept for a windowing systemHYPERLINK "http://www.pat2pdf.org/pat2pdf/

    foo.pl?number=5745759" . 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 themicrokernel 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 theautomotive 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.

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

    Technology

    The QNX kernel contains only CPU scheduling, interprocess communication, interruptredirection 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.

    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, sendinga 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, althoughan 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.

  • 8/9/2019 qnx.pdf

    3/3

    Due to the microkernel architecture QNX is also a distributed operating system. Dan

    Dodge and Peter van der Veen hold a patent based on the QNX operating system's

    distributed processing features (known commercially as Transparent DistributedProcessing).

    All I/O operations, file system operations, and network operations were meant to workthrough 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.There are no device drivers in the kernel.

    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, anessential feature in a hard real-time system.

    The boot loader, although seldom discussed, is the other key component of the minimalmicrokernel 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 thekernel. Even such functions as program loading are not in the kernel, but instead are inshared 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), whichis QNX's term for being able to lock selected threads to selected CPUs. 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 isstill 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 systemis 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.

    CompetitorsSome important competitors in the embedded market are LynxOS, VxWorks, Linux,

    eCos, ThreadX, Windows CE, RTEMS, and OS-9.