|
RTX adds a real-time subsystem, known as RTSS, to Windows (see the figure below). RTSS is conceptually similar to other Windows subsystems (such as Win32, POSIX, WOW, and DOS) in that it supports its own execution environment and API. RTSS differs in one important area, though: RTX includes a real-time enabled Hardware Abstraction Layer (HAL) extension.
The HAL extension maintains interrupt isolation between RTSS and Windows, while providing inter-processors interrupt (IPI) communication between the two. The real-time subsystem schedules its RTSS tasks to execute on separate processors, without any interference from the Windows operating system or Windows processes.
RTX and Windows Working Together
RTSS supports Interprocess Communication (IPC) objects that can be manipulated by either RTSS or Win32 processes; this enables simple and standard communication and synchronization between real-time and non-real-time programs. Access to shared IPC objects is managed via internal queued spinlocks that enforce a first in, first out paradigm. Using queued spinlocks allows the RTSS subsystem to ensure that the order of threads requesting a shared resource is maintained and respected.
RTSS maintains its own namespace and object list, separate from Windows. This means that within a Windows application an object created using the Win32 API will be managed in the Windows namespace and object list, while an object created using the Real-Time API (RTAPI) will be managed in the RTSS namespace and object list. In an RTSS application, objects created using the supported Win32 API, along with those created using the RTAPI, will exist in the RTSS namespace. Windows Applications should not use RTSS objects unless they need to communicate with RTSS applications. By creating objects using the RTAPI, a Windows application will use additional non-paged pool resources and add additional SRI activity between Windows and the RTX subsystem, which could impact real-time performance.
The RTX Application Programming Interface for Win32 and RTSS processes includes support for Floating-Point Unit (FPU) and structured exception handling. No addition setup is required to use floating point within your RTSS application.