RMX (operating system)
||This article includes a list of references, but its sources remain unclear because it has insufficient inline citations. (November 2011)|
|Developer||Intel / TenAsys Corporation|
|OS family||Real-time operating systems|
|Marketing target||Embedded systems|
|Platforms||8080, 8086, 80386 or higher|
iRMX is a real-time operating system designed specifically for use with the Intel 8080 and Intel 8086 family of processors. It is an acronym for Real-time Multitasking eXecutive. Intel developed iRMX in the 1970s and originally released RMX/80 in 1976 and RMX/86 in 1980 to support and create demand for their processors and Multibus system platforms.
The functional specification for RMX/86 was authored by Bruce Schafer and Miles Lewitt and was completed in the summer of 1978 soon after Intel relocated the entire Multibus business from Santa Clara California to Aloha, Oregon. Bruce and Miles went on each manage one of the two teams that developed the RMX/86 product for release on schedule in 1980.
iRMX is a layered design: containing a kernel, nucleus, basic i/o system, extended i/o system and human interface. An installation need include only the components required: intertask synchronization, communication subsystems, a filesystem, extended memory management, command shell, etc. The native filesystem is specific to iRMX, but has many similarities to the original Unix (V6) filesystem, such as 14 character path name components, file nodes, sector lists, application readable directories, etc.
iRMX supports multiple processes (known as jobs in RMX parlance) and multiple threads are supported within each process (task). In addition, interrupt handlers and threads exist to run in response to hardware interrupts. Thus, iRMX is a multi-processing, multi-threaded, pre-emptive, real-time operating system (RTOS).
Several variations of iRMX have been developed since its original introduction on the Intel 8080: iRMX I, II and III, iRMX-86, iRMX-286, DOS-RMX, iRMX for Windows, and, most recently, INtime. While many of the original variants of iRMX are still in use, only iRMX III, iRMX for Windows, and INtime are currently supported for the development of new real-time applications. Each of these three supported variants of iRMX require an Intel 80386 equivalent or higher processor to run.
A significant architectural difference between the INtime RTOS and all other iRMX variants is the support for address segments (see x86 memory segmentation). The original 8086 family of processors relied heavily on segment registers to overcome limitations associated with addressing large amounts of memory via 16-bit registers. The iRMX operating system and the compilers developed for iRMX include features to exploit the segmented addressing features of the original x86 architecture. The INtime variant of iRMX does not include explicit support for segmentation, opting instead to support only the simpler and more common 32-bit flat addressing scheme.
Note: despite the fact that native processes written for INtime can only operate using unsegmented flat-mode addressing, it is possible to port and run some older iRMX applications that use segmented addressing to the INtime kernel.
When Intel introduced the Intel 80386 processor, in addition to expanding the iRMX RTOS to support 32-bit registers, iRMX III also included support for the four distinct protection rings (named rings 0 through 3) which describe the protected-mode mechanism of the Intel 32-bit architecture. In practice very few systems have ever used more than rings 0 and 3 to implement protection schemes.
The I, II, III, -286 and -86 variants are intended as standalone real-time operating systems. A number of development utilities and applications were made for iRMX, such as compilers (PL/M, Fortran, C), an editor (Aedit), process and data acquisition applications and so on. Cross compilers hosted on the VAX/VMS system were also made available by Intel. iRMX III is still supported today and has been used as the core technology for newer real-time virtualization RTOS products including iRMX for Windows and INtime.
iRMX III on Intel Multibus hardware is used in the majority core systems on CLSCS the London Underground Central line signals control system was supplied by Westinghouse now Invensys and commissioned in the late 1990s. The Central line is an automatic train operation line. Automatic train protection is by trackside and train borne equipment that does not use iRMX. It is the automatic train supervision elements that use a mix of iRMX on Multibus, and Solaris on Sparc computers. 16 iRMX local site computers are distributed along the Central line together with 6 central iRMX computers at the control centre. All 22 iRMX computers are dual redundant. iRMX CLSCS continues in full operation in 2011.
Oslo Metro or Oslo Tunnelbane uses a similar although less complex Westinghouse supplied iRMX control system through the central Common Tunnel or Fellestunnelen tracks but was expected to be decommissioned in 2011.
DOS-RMX is a variant of the standalone iRMX operating system designed to allow two operating systems to share a single hardware platform. In simplest terms, MS-DOS and iRMX operate concurrently on a single IBM PC compatible computer, where iRMX tasks (processes) have scheduling priority over the DOS kernel, interrupts, and applications. iRMX events (e.g., hardware interrupts) pre-empt the DOS kernel to ensure that tasks can respond to real-time events in a time-deterministic manner. In a functional sense, DOS-RMX is the predecessor to iRMX for Windows and INtime.
In practice, DOS-RMX appears as a TSR to the MS-DOS kernel. Once loaded as a TSR, iRMX takes over the CPU, changing to protected mode and running DOS in a virtual machine within an RMX task. This combination provides RMX real-time functionality as well as full MS-DOS services.
iRMX for Windows
Like DOS-RMX, this system provides a hybrid mixture of services and capabilities defined by MS-DOS, Microsoft Windows, and iRMX. Inter-application communication via an enhanced Windows DDE capability allows RMX tasks to communicate with Windows processes. 
iRMX for Windows was originally intended for use in combination with the 16-bit version of Microsoft Windows. In 2002 iRMX for Windows was reintroduced by adding these RMX personalities to the INtime RTOS for Windows, allowing it to be used in conjunction with the 32-bit protected-mode versions of Windows (Windows NT, Windows 2000, etc.).
Like its iRMX predecessors, INtime is a real-time operating system. And, like DOS-RMX and iRMX for Windows, it runs concurrently with a general-purpose operating system on a single hardware platform. INtime 1.0 was originally introduced in 1997 in conjunction with the Windows NT operating system. Since then it has been upgraded to include support for all subsequent protected-mode Microsoft Windows platforms, including Windows Vista and Windows 7.
INtime can also be used as a stand-alone RTOS. INtime binaries are able to run unchanged when running on a stand-alone node of the INtime RTOS. Unlike Windows, INtime can run on an Intel 80386 or equivalent processor. Current versions of the Windows operating system generally require at least a Pentium level processor in order to boot and execute.
The introduction of INtime 3.0 included several important enhancements. Among them, support for multi-core processors and the ability to debug real-time processes on the INtime kernel using Microsoft Visual Studio. INtime is not an SMP operating system, thus support for multi-core processors is restricted to a special form of asymmetric multiprocessing. When used on a multi-core processor INtime can be configured to run on one CPU core while Windows runs on the remaining processor core(s).
Use cases can be viewed on the TenAsys website.
- Dennis P. Geller and Anita Sanders (March 2008). "20th Anniversary: Mastering a real-time operating system". Embedded Systems Design., originally published in Embedded Systems Programming in 1989
- Richard Carver (January 1991). "The iRMX Family Of Operating Systems". Dr. Dobb's Journal.
- Krishnan Rajamani, Narjala Bhasker, Rick Gerber, and Steve Snyder (April 1992). "Windows Goes Real Time". BYTE: 119–130. Vol. 17 No. 4.
- David Potter (November 1992). "Designing a Real-Time Debugger (the best of both worlds)". Dr. Dobb's Journal.
- Christopher Vickery, Real-Time and Systems Programming for PCs: Using the iRMX for Windows Operating System, McGraw-Hill (1993) ISBN 0-07-067466-3
- Donald J. Ewing, Professor Emeritus, Electrical Engineering and Computer Science, The University of Toledo (September 1998). "iRMX Training Notes".