Further reading

Understanding the UNIX system

While these books explain individual systems in detail, they do not in general attempt to provide an understanding of the philosophy of the system, including an explanation of how the UNIX system was designed and integrated.

There are two approaches to understanding UNIX, besides understanding it as a user. The first approach is the system level approach, which attempts to explain the system in terms of the services it provides to applications, and covers the API (Application Program Interface) of the operating system in some depth. This is most useful to programmers wishing to develop applications that can take full advantage of the UNIX environment.

A useful example of this type of book is Advanced UNIX Programming (Marc Rochkind; Prentice-Hall, 1985). This book presupposes a familiarity with the C programming language. On that basis, it conducts the reader on a guided tour of the intricacy of UNIX system programming, with a chapter by chapter overview of the function calls available to user programs. There are many other books of this type; this one was one of the first detailed explanations of UNIX system programming.

The second approach to understanding the UNIX system is the internals approach, which provides the reader with a detailed explanation of how the internal subsystems of the UNIX operating system were designed, and how they carry out their functions. This course of study almost certainly requires a basic knowledge of operating systems theory and computer science before it can be made use of, but provides the suitably equipped reader with a total understanding of what the UNIX operating system was designed to achieve, and how it succeeds.

The classic text following this approach is The Design of the UNIX Operating System (Maurice J. Bach; Prentice Hall, 1986). Bach provides a detailed exposition of the design elements of the UNIX system kernel, including information on how processes are scheduled, how memory is managed, and how the API is presented to the applications run on the system.

For a more introductory text (but one for which a knowledge of the C programming language is still required), see Operating Systems: Principles and Practice (Andrew S. Tannenbaum; Prentice-Hall). This book does not cover the UNIX system as such, but it provides a first undergraduate course in the theory and practice of operating systems from a very UNIX system-like perspective. The centerpiece of the book is the kernel of an operating system called Minix, which is a small system developed for teaching purposes. The principles explained in this book are almost entirely applicable to the world of UNIX systems, and it has the advantage (for those who are new to operating systems theory) of explaining the central concepts as it goes along.

Previous topic: Learning the C programming language

© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003