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 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 REACT for IRIX 6.2, 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, “Basic Features of the CHALLENGE and IRIX™ Architectures,” contains an overview of how IRIX manages the resources of a Challenge or Onyx system for the benefit of normal, interactive UNIX applications; and points out how these methods often conflict with the needs of real-time programs. This chapter also touches on the operation of a multiprocessor array such as the POWERChallenge Array.

Chapter 3, “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 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.

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. This useful manual, part of the IRIX Developer Option, is new in version 5.3; part number 007-2476-001.

  • The WindView™ for IRIX Programmer's Guide, part number 007-2824-001, 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-060, 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-001)

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

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

  • 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 and other chip-specific documents that are available for downloading from the MIPS home page, http://www.mips.com/HTMLs/Mips_Chip_Rm.html.

  • For details of some 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 available with the IRIX Developer's Option).

  • 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.