# RTX (operating system)

RTX / RTX64 are real-time operating system (RTOS) by the firm IntervalZero. They are software extensions that convert Microsoft Windows operating system into a RTOS. It was the first Windows real-time solution on the market.

## Overview

RTX and RTX64 real-time software extensions to Windows combine the familiar user experience of Microsoft Windows (rich GUI, available drivers and software, ...) and the direct control of embedded hardware by providing hard real-time determinism and symmetric multiprocessing (SMP) abilities.
The RTX / RTX64 extensions have followed the Windows architecture since Windows NT 3.5. Generally, RTX supports 32-bit Windows; RTX64 supports 64-bit Windows.
The systems are used in different markets such as industrial automation, testbed and simulation, digital audio, digital video, aerospace military, medical devices, electrical grid, electricity generation, and other uses.

## Technical details

* Hardware abstraction layer extension – RTX / RTX64 relies on a Windows hardware abstraction layer (HAL) extension to initialize the RTX-dedicated processors and to provide the real-time subsystem (RTSS) with high resolution timers (up to 1 microsecond). It also provides an interrupt isolation mechanism.
* Symmetric multiprocessing – Like Windows, RTX / RTX64 is based on a symmetric multiprocessing (SMP) architecture. Depending on the real-time needs, users can choose the number of processors to dedicate to RTX / RTX64 to run real-time processes. RTX can use up to 31 dedicated processors; RTX64 can use up to 63. Users can then scale real-time applications between the RTX / RTX64 dedicated processors.
* Interrupt management – RTX / RTX64 supports both line based and Message Signaled Interrupts (MSI/MSI-X). Interrupt service thread (IST) latencies are under 10 microseconds.
* Memory management – The deterministic memory pool allocated for RTX / RTX64 is taken from the system non-paged pool memory. For example, under Windows 7, the amount of non-paged pool is: for 32-bit, 1 GB to 2 GB of the random-access memory (RAM) depending on the configuration; for 64-bit, 75% up to a maximum of 128 GB.
* Scheduling – One scheduler is used across all real-time processors (SMP architecture). It uses priority-driven (128 real-time priorities) and pre-emptive algorithms to ensure critical thread context switches. Priority promotion mechanisms are provided to avoid priority inversion. Yields to threads of higher priority occur with sub-microsecond timing.
* Windows interaction – RTX / RTX64 provides separation from Windows. Windows processes cannot interfere with real-time applications. If Windows issues a STOP message or shutdown, real-time applications have the ability to continue running to shutdown safely. Communicating with Windows occurs via RTX / RTX64 providing common inter-process communication (IPC) mechanisms between real-time processes and Windows processes (user processes or kernel drivers). Synchronizing is done via events, mutexes and semaphores; data sharing via shared memory or socket communication.
* Real time application development – RTX / RTX64 application development is done from Microsoft Visual Studio in C or C++ using a windows-like application programming interface (API). RTX / RTX64 executables are .rtss and DLLs are .rtdll.
* Network communication – The RTX / RTX64 real-time TCP/IP stack (RT-TCP/IP) supports TCP, UDP, and IP for IPv4 and IPv6. RTX / RTX64 drivers for standard network interface controllers (NICs) are provided with the stack.