|
Traditional UNIX ® I/O interfaces are based on copy semantics,
where read and write calls transfer data between the kernel and user-defined
buffers. Although simple, copy semantics limit the ability of the operating
system to efficiently implement data transfer operations. In this paper, we
present extensions on the traditional UNIX interfaces that are based on
explicit buffer exchange. Instead of transferring data between user-defined
buffers and the kernel, the new extensions transfer data buffers between the
user and the ker-nel. We study using the new interfaces in typical
application programs, and compare their use to the stan-dard UNIX interfaces.
The new interfaces lend themselves to an efficient zero-copy data transfer
implementation. We describe such an implementation in this paper, and we
examine its performance. The implementation, done in the context of the
SolarisTM operating system, is very efficient: for example, on a typical
file transfer benchmark, the network throughput was improved by more than
40% and the CPU utilization reduced by more than 20%.
|