UIO: a uniform I/O system interface for distributed systems

A uniform I/O interface allows programs to be written relatively independently of specific I/O services and yet work with a wide variety of the I/O services available in a distributed environment. Ideally, the interface provides this uniform access without excessive complexity in the interface or loss of performance. However, a uniform interface does not arise from careful design of individual system interfaces alone; it requires explicit definition. In this paper, the UIO (uniform I/O) system interface that has been used for the past five years in the V distributed operating system is described, with the focus on the key design issues. This interface provides several extensions beyond the I/O interface of UNIX#8482;, including support for record I/O, locking, atomic transactions, and replication, as well as attributes that indicate whether optional semantics and operations are available. Experience in using and implementing this interface with a variety of different I/O services is described, along with the performance of both local and network I/O. It is concluded that the UIO interface provides a uniform I/O system interface with significant functionality, wide applicability, and no significant performance penalty.

[1]  James J. Horning,et al.  Formal specification as a design tool , 1980, POPL '80.

[2]  James J. Horning,et al.  The Larch Family of Specification Languages , 1985, IEEE Software.

[3]  Willy Zwaenepoel Implementation and performance of pipes in the V-System , 1985, IEEE Transactions on Computers.

[4]  Marvin Theimer,et al.  Preemptable remote execution facilities for the V-system , 1985, SOSP '85.

[5]  Mark R. Brown,et al.  The Alpine file system , 1985, TOCS.

[6]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[7]  Bruce Walker,et al.  The LOCUS distributed operating system , 1983, SOSP '83.

[8]  Satish M. Thatte,et al.  Persistent Memory: A Storage Architecture for Object-Oriented Database Systems , 1986, OODBS.

[9]  Willy Zwaenepoel,et al.  Distributed process groups in the V Kernel , 1985, TOCS.

[10]  Daniel Ingalls,et al.  The Smalltalk-76 Programming System. , 1978 .

[11]  Willy Zwaenepoel,et al.  The distributed V kernel and its performance for diskless workstations , 1983, SOSP '83.

[12]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

[13]  David R. Cheriton,et al.  The Thoth system : multi-process structuring and portability , 1982 .

[14]  Keith A. Lantz,et al.  Third Generation Graphics for Distributed Systems , 1983 .

[15]  Jon Postel,et al.  DOD standard transmission control protocol , 1980, CCRV.

[16]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[17]  David L. Presotto,et al.  Publishing: a reliable broadcast communication mechanism , 1983, SOSP '83.

[18]  K Thompson,et al.  UNIX implementation , 1986 .

[19]  David R. Cheriton,et al.  Performance of the V storage server: a preliminary report , 1985, CSC '85.

[20]  John Kunze,et al.  A trace-driven analysis of the unix 4 , 1985, SOSP 1985.

[21]  Antonio Albano,et al.  Type hierarchies and Semantic Data Models , 1983, SIGPLAN '83.

[22]  Gene McDaniel,et al.  WFS a simple shared file system for a distributed environment , 1979, SOSP '79.

[23]  Richard F. Rashid,et al.  The Integration of Virtual Memory Management and Interprocess Communication in Accent , 1986, ACM Trans. Comput. Syst..

[24]  David R. Cheriton,et al.  The Thoth System , 1982 .

[25]  Alfred Z. Spector,et al.  Synchronizing shared abstract types , 1984, TOCS.

[26]  Alfred Z. Spector,et al.  Synchronizing shared abstract data types , 1983 .

[27]  Ken Thompson,et al.  The UNIX time-sharing system , 1974, CACM.

[28]  George G. Robertson,et al.  Accent: A communication oriented network operating system kernel , 1981, SOSP.

[29]  Stephen Fox,et al.  A recovery algorithm for a distributed database system , 1983, PODS.

[30]  Anita K. Jones The Object Model: A Conceptual Tool for Structuring Software , 1978, Operating Systems.

[31]  John A. Kunze,et al.  A trace-driven analysis of the UNIX 4.2 BSD file system , 1985, SOSP '85.

[32]  Irving L. Traiger,et al.  The notions of consistency and predicate locks in a database system , 1976, CACM.

[33]  Keith A. Lantz,et al.  Preemptable remote execution facilities for the V-system , 1985, SOSP 1985.

[34]  K. Thompson,et al.  UNIX time-sharing system: UNIX implementation , 1978, The Bell System Technical Journal.

[35]  Jim Gray,et al.  Notes on Data Base Operating Systems , 1978, Advanced Course: Operating Systems.

[36]  David L. Presotto,et al.  A Reliable Broadcast Communication Mechanism , 1983 .

[37]  Forest Baskett,et al.  Task communication in DEMOS , 1977, SOSP '77.

[38]  David R. Cheriton,et al.  A Decentralized Naming Facility , 1986 .

[39]  Daniel H. H. Ingalls,et al.  The Smalltalk-76 programming system design and implementation , 1978, POPL.

[40]  David R. Cheriton The V Kernel: A Software Base for Distributed Systems , 1984, IEEE Software.

[41]  A. Retrospective,et al.  The UNIX Time-sharing System , 1977 .

[42]  R. Bayer,et al.  Operating systems: An advanced course , 1978 .