next up previous contents
Next: Multi-user Up: Beginning UNIX User's Guide Previous: Introduction

Operating System Concepts

 

In some loose kind of way, the terms ``Operating System (OS)'' and ``kernel'' refer to the same thing. At the barest level, an operating system is ``just another program''. An operating system is responsible for managing the resources of the computer. For example: we certainly wouldn't want to indiscriminately write everywhere on any hard disk. If we did, we would quickly lose all our data. The capabilities of the operating system are largely dependent on the environment we are operating under. If we assume that this OS is only dealing with a single user and is allowed to do anything at all with the hardware, the management task is considerably simpler than if we assume that this computer will be running many programs for many different users, all at more or less the same time.

The first case is similar to that found in most personal computer operating systems: CPM, AmigaDOS, MS-DOS, Macintosh System X, MS-Windowsgif, .... The second case is similar to that found in: VMS, TOPS, MTS, MVS, .... UNIX belongs to this second casegif.

UNIX was a Bell Labs spinoff of a project to design an early time-sharing operating system called Multics. Other partners were MIT and General Electric. Multics eventually came online, but not before Bell Labs left the project. The name UNIX is sort of a pun on the name ``Multics''. UNIX was first and foremost an environment tailored for the development of software. This was natural enough, as the people who developed it were largely programmers. However, UNIX had to incorporate a number of packages that involved publishing applications, otherwise there was no way it would continue to be funded at AT&T.

The development of UNIX and of the C programming language were intimately related, as they are both products of Bell Labs. System calls and philosophy are very similar between UNIX and C. And most books on programming (C, RatFor, ...) by Bell Labs staff used UNIX utility programs as examples.

One of the early philosophies of UNIX was that programs associated with it should be simple programs which did a single task very well. And by default, these programs would read their input from some mechanism called STDIN and write their output to a mechanism called STDOUT. If by some chance errors happened during processing, the program would write error messages via a mechanism called STDERR.

By this early design philosophy, UNIX users and programmers were able to construct very complicated and capable suites of software by piecing together these small tools.

An example of this comes from document preparation:

 soelim main_file | tbl | eqn | troff
where the soelim program read main_file and included any files ``sourced'' by this main_file, the output of soelim would then be input to the tbl program which is used to format tables (and leave everything else alone), which was passed to the eqn program which was used to format equations (and leave everything else alone), which was passed to a typesetting program called troff to generate high quality output (such as postscript).




next up previous contents
Next: Multi-user Up: Beginning UNIX User's Guide Previous: Introduction

Gordon Haverland
Sat Oct 9 13:50:48 MDT 1999