About This Guide

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 the IRIX™ operating system provides 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 REACT for IRIX 6.4, and REACT/Pro 3.0.

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. In the online book, the name of a reference page (“man page”) is red in color (for example: mpin(2), sproc(2)). You can click on these names to cause the reference page to open automatically in a separate terminal window.

Who This Guide Is For

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.

What the Book Contains

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, “How IRIX™ and REACT/Pro™ Support Real–Time Programs,” gives an overview of the real-time features of IRIX. From these survey topics you can jump to the detailed topics that interest you most.

Chapter 3, “Controlling CPU Workload,” describes how you can isolate a CPU and dedicate almost all of its cycles to your program's use.

Chapter 4, “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 5, “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 6, “Managing Device Interactions,” summarizes the software interfaces to external hardware, including and user-level programming of external interrupts and VME and SCSI devices.

Other Useful Books

The following books contain more information that can be useful to a real-time programmer.

  • For a survey of all IRIX facilities and manuals, see Programming on Silicon Graphics Systems: An Overview; part number 007-2476-nnn.

  • The WindView™ for IRIX Programmer's Guide, part number 007-2824-nnn, tells how to use a graphical performance analysis tool that can be of great help in debugging and tuning a real-time application on a multiprocessor system.

  • The IRIX Device Driver Programmer's Guide, part number 007-0911-nnn, gives details on all types of device control, including programmed I/O (PIO) and direct memory access (DMA) from the user process, as well as discussing the design and construction of device drivers and other kernel-level modules.

  • Administration of a multiprocessor is covered in a family of six books, including

    • IRIX Admin: System Configuration and Operation (007-2859-nnn)

    • IRIX Admin: Disks and Filesystems (007-2825-nnn)

    • IRIX Admin: Peripheral Devices (007-2861-nnn)

  • For details of the architecture of the CPU, processor cache, processor bus, and virtual memory, see the MIPS R4000 Microprocessor User's Manual, 2nd Ed. by Joseph Heinrich. This and other chip-specific documents are available for downloading from the MIPS home page, http://www.mips.com.

  • For details of some IRIX system facilities not covered in this book, Topics in IRIX Programming, part number 007-2478-nnn and MIPS Compiling and Performance Tuning Guide, 007-2479-nnn (both available with the IRIX Developer's Option).

  • For programming inter-computer connections using sockets, IRIX Network Programming Guide, part number 007-0810-nnn.

  • For coding functions in assembly language, MIPSpro Assembly Language Programmer's Guide, part number 007–2418–nnn.

In addition, Silicon Graphics offers training courses in Real-Time Programming and in Parallel Programming.