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 real-time facilities of IRIX, called REACT, as well as the optional REACT/Pro extensions.
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 man page (“man page”) is red in color (for example, mpin(2) and sproc(2)). You can click on these names to cause the man page to open automatically in a separate terminal window.
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, “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 user-level programming of external interrupts and VME and SCSI devices.
Chapter 7, “Managing User-Level Interrupts”, describes the user-level interrupt (ULI) facility to perform programmed I/O (PIO) from user space. You can use PIO to initiate a device action that leads to a device interrupt, and you can intercept and handle the interrupt in your program.
Appendix A, “Sample Programs”, provides the location of the sample programs that are distributed with the REACT/Pro Frame Scheduler and describes them in detail.
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 IRIXview User'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.
Topics in IRIX Programming, part number 007-2478-nnn, covers several programming facilities only touched on in this book.
MIPS Compiling and Performance Tuning Guide, 007-2479-nnn covers compiler use.
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 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.
For information about the physical description of the XIO-VME option for Origin and Onyx 2 systems, refer to the Origin 2000 and Onyx 2 VME Option Owner's Guide.
For information about the SGI Origin 3000 series and Onyx 3000 series, see the following site:
http:/www.sgi.com/origin/3000
In addition, Silicon Graphics offers training courses in Real-Time Programming and in Parallel Programming.
If you have comments about the technical accuracy, content, or organization of this document, please tell us. Be sure to include the title and document number of the manual with your comments. (Online, the document number is located in the front matter of the manual. In printed manuals, the document number can be found on the back cover.)
You can contact us in any of the following ways:
Send e-mail to the following address:
techpubs@sgi.com |
Use the Feedback option on the Technical Publications Library World Wide Web page:
http://techpubs.sgi.com |
Contact your customer service representative and ask that an incident be filed in the SGI incident tracking system.
Send mail to the following address:
Technical Publications
SGI
600 Amphitheatre Pkwy., M/S 535
Mountain View, California 94043-1351
Send a fax to the attention of “Technical Publications” at +1 650 932 0801.
We value your comments and will respond to them promptly.