The UNIX Time-sharing System

UNIX is a general-purpose, interactive time-sharing operating system for the DEC PDP-11 and Interdata 8/32 computers. Since it became operational in 1971, it has become quite widely used. This paper discusses the strong and weak points of UNIX and some areas where we have expended no effort. The following areas are touched on: The structure of files: a uniform, randomly-addressable sequence of bytes. The irrelevance of the notion of ‘‘record.’’ The efficiency of the addressing of files. The structure of file system devices; directories and files. I/O devices integrated into the file system. The user interface: fundamentals of the shell, I/O redirection, and pipes. The environment of processes: system calls, signals, and the address space. Reliability: crashes, losses of files. Security: protection of data from corruption and inspection; protection of the system from stoppages. Use of a high-level language the benefits and the costs. What UNIX does not do: ‘‘real-time,’’ interprocess communication, asynchronous I/O. Recommendations to system designers. UNIX is a general-purpose, interactive time-sharing operating system primarily for the DEC PDP-11 series of computers, and recently for the Interdata 8/32. Since its development in 1971, it has become quite widely used, although publicity efforts on its behalf have been minimal, and the license under which it is made available outside the Bell System explicitly excludes maintenance. Currently there are more than 300 Bell System installations, and an even larger number in universities, secondary schools, and commercial and government institutions. It is useful on a rather broad range of configurations, ranging from a large PDP-11/70 supporting 48 users to a single-user LSI-11 system. Some General Observations In most ways UNIX is a very conservative system. Only a handful of its ideas are genuinely new. In fact, a good case can be made that it is in essence a modern implementation of MIT’s CTSS system [1]. This claim is intended as a compliment to both UNIX and CTSS. Today, more than fifteen years after CTSS was born, few of the interactive systems we know of are superior to it in ease of use; many are inferior in basic design. UNIX was never a ‘‘project;’’ it was not designed to meet any specific need except that felt by its major author, Ken Thompson, and soon after its origin by the author of this paper, for a pleasant environment in which to write and use programs. Although it is rather difficult, after the fact, to try to account for __________________ * A version of this paper was presented at the Tenth Hawaii International Conference on the System Sciences, Honolulu, January, 1977.

[1]  P. A. Crisman,et al.  The compatible time-sharing system : a programmer's guide , 1965 .

[2]  E. I. Organick,et al.  The Multics Input/Output system , 1971, SOSP '71.

[3]  H. Lycklama,et al.  MERT - a multi-environment real-time operating system , 1975, SOSP.

[4]  Greg Chesson The network Unix system , 1975, SOSP.

[5]  Michael Stonebraker,et al.  The design and implementation of INGRES , 1976, TODS.

[6]  John R. Mashey,et al.  An introduction to the Programmer's Workbench , 1976, ICSE '76.

[7]  K. Thompson,et al.  The UNIX time-sharing system , 1978 .

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

[9]  M. E. Lesk,et al.  UNIX time-sharing system: The C programming language , 1978, The Bell System Technical Journal.

[10]  T. A. Dolotta,et al.  UNIX time-sharing system: The programmer's workbench , 1978, The Bell System Technical Journal.

[11]  S. R. Bourne Unix time-sharing system: the unix shell , 1978, The Bell System Technical Journal.

[12]  M. E. Lesk,et al.  UNIX time-sharing system: Document preparation , 1978, The Bell System Technical Journal.

[13]  S. C. Johnson,et al.  UNIX time-sharing system: Portability of c programs and the UNIX system , 1978, The Bell System Technical Journal.