To initiate I/O
activity, an application programmer typically employs high-level I/O commands that are
provided by her programming language. Depending upon the version of the UNIX operating
system she uses, the language she writes in, and the I/O subsystem specific to the
computing platform upon which the program is run, a given I/O call will generate a
different sequence of operations. But the programmer need not concern herself with the
fine points of file system interaction, disk access, interprocessor communication, and
other I/O operational details. Rather, UNIX I/O provides a protocol for managing these
low-level operations, transparently culling and translating the distinct commands,
generated by various implementations of the operating system and programming languages,
into a standard set of I/O calls. This not only simplifies the task of the programmer, it
also enhances application portability among differently configured UNIX platforms. Of
course, for fine grained control of I/O, programmers can opt to circumvent the operating
system's I/O management capabilities and directly control low-level I/O operations.
The UNIX I/O extension to the Pablo Trace Library is a set of programs that can be used as replacements for the standard UNIX, C, and FORTRAN I/O calls. The trace library calls are exactly the same as the standard I/O calls except they have been augmented by instrumentation software, attached before and after the call itself, to capture and record internal data. So, rather than using the standard I/O calls, users call UNIX I/O extensions to Pablo Trace Library routines from within their source code and then compile this instrumented code, linking it with the Pablo library and its extensions. As the application executes, the perfomance data captured by the instrumentation is recorded in SDDF files. Then performance analysts can use these SDDF files with Pablo analysis tools to profile and analyze UNIX I/O behavior and interaction with other system components.