A real-time program is one that must maintain a fixed timing relationship to external hardware. In order to respond to the hardware quickly and reliably, a real-time program must have special support from the system software and hardware.
This guide describes the support that IRIX™ and the Silicon Graphics CHALLENGE™, Onyx™, and POWERCHALLENGE computers provide to real-time programs. The support bundled with all versions of IRIX is called REACT™. A set of extra-cost features is called REACT/Pro™. This guide covers both REACT and REACT/Pro.
This guide is designed to be read online, using IRIS InSight™. You are encouraged to read it in non-linear order using all the navigation tools that Insight provides.
This guide is written for real-time programmers. You, a real-time programmer, are assumed to be
an expert in the use of your programming language, which must be either C, Ada, or FORTRAN to use the features described here
knowledgeable about the hardware interfaces used by your real-time program
familiar with system-programming concepts such as interrupts, device drivers, multiprogramming, and semaphores
You are not assumed to be an expert in UNIX® system programming, although you do need to be familiar with UNIX as an environment for developing software.
Here is a summary of what you will find in the following chapters.
Chapter 1, “Real-Time Programs,” describes the important classes of real-time programs, emphasizing the different kinds of performance requirements they have.
Chapter 2, “Basic Features of the CHALLENGE and IRIX™ Architectures,” contains an overview of how IRIX manages the resources of a fully symmetric multiprocessor like the Challenge/Onyx for the benefit of normal, interactive UNIX applications; and points out how these methods often conflict with the needs of real-time programs.
Chapter 3, “How IRIX™ and REACT/Pro™ Support Real–Time Programs,” gives an overview of the real-time features of IRIX. From these overview topics you can jump to the detailed topics that interest you most.
Chapter 4, “Managing Virtual Memory in a Real–Time Program,” covers the management of your virtual address space: locking it to real memory; mapping devices and files into it; and sharing segments of it between processes.
Chapter 5, “Managing Time and Time Intervals,” covers the use of timers and clocks in the Challenge/Onyx architecture.
Chapter 6, “Controlling CPU Workload,” describes how you can isolate a CPU and dedicate almost all of its cycles to your program's use.
Chapter 7, “Using the Frame Scheduler,” describes the REACT/Pro Frame Scheduler, which gives you a simple, direct way to structure your real-time program as a group of cooperating processes, efficiently scheduled on one or more isolated CPUs.
Chapter 8, “Optimizing Disk I/O for a Real-Time Program,” describes how to set up disk I/O to meet real-time constraints, including the use of asynchronous I/O and guaranteed-rate I/O.
Chapter 9, “Managing Device Interactions,” summarizes the software interfaces to external hardware, including and user-level programming of external interrupts and VME and SCSI devices.
The following books contain more information that can be useful to a real-time programmer.
For a survey of all IRIX facilities and manuals, Programming on Silicon Graphics Systems: An Overview. This useful manual, part of the IRIX Developer Option, is new in version 5.3; part number 007-2476-001.
For administration of a multiprocessing server, including system generation and the use of the XFS file system, IRIX Advanced Site and Server Administration Guide. The version that covers the XFS file system is version 5.3, part number 007-0603-100.
For details of the architecture of the CPU, processor cache, processor bus, and virtual memory, MIPS R4000 Microprocessor User's Manual by Joseph Heinrich, Prentice-Hall, 1993 (ISBN 0-13-105925-4) and the MIPS R10000 Microprocessor User's Manual, available in 1995.
For details of many IRIX system facilities not covered in this book, Topics in IRIX Programming, part number 007-2478-001 and MIPS Compiling and Performance Tuning Guide, 007-2479-001 (both are available with the IRIX Developer's Option).
For the design and construction of device interrupt handlers and on programming the SCSI interface, IRIX Device Driver Programming Guide, part number 007-0911-050; and IRIX Device Driver Reference Pages, part number 007-2183-003.
For programming inter-computer connections using sockets, IRIX Network Programming Guide, part number 007-0810-050.
For coding functions in assembly language, MIPSpro Assembly Language Programmer's Guide, part number 007–2418–001.
In addition, Silicon Graphics offers training courses in Real-Time Programming and in Parallel Programming.