High Performance I/O
This section describes I/O with real-time processes. In Oracle Solaris, the libraries supply two sets of interfaces and calls to perform fast, asynchronous I/O operations. The POSIX asynchronous I/O interfaces are the most recent standard. An Oracle Solaris environment also provides file and in-memory synchronization operations and modes to prevent information loss and data inconsistency.
Standard UNIX I/O is synchronous to the application programmer. An
application that calls
read
(2) or
write
(2) usually waits until the system call has finished. For more
information, see the
read
(2) and
write
(2) man pages.
Real-time applications need asynchronous, bounded I/O behavior. A process that issues an asynchronous I/O call proceeds without waiting for the I/O operation to complete. The caller is notified when the I/O operation has finished.
Asynchronous I/O can be used with any Oracle Solaris file. Files are opened synchronously and no special flagging is required. An asynchronous I/O transfer has three elements: call, request, and operation. The application calls an asynchronous I/O interface, the request for the I/O is placed on a queue, and the call returns immediately. At some point, the system dequeues the request and initiates the I/O operation.
Asynchronous and standard I/O requests can be intermingled on any file descriptor. The system maintains no particular sequence of read and write requests. The system arbitrarily resequences all pending read and write requests. If a specific sequence is required for the application, the application must insure the completion of prior operations before issuing the dependent requests.