Terminals, Hosts, and All That

A legacy Unix systems assumes it will be supporting many users via serial terminals. Such terminals are normally dumb devices that provide a text mode display and a simple keyboard. A Unix system may have many such devices connected to it simultaneously. Some of the connections may be direct serial connections while other connections may be via modems.

Since Unix supports dumb terminals, the standard Unix utility programs are strictly command line oriented. They do not use graphics or full screen menus. Furthermore, they typically do not understand "function keys" or other extended keys since such keys are not available on all terminals. In addition most of the standard Unix utility programs are not very wordy. In part this is the Unix tradition, but in an environment where slow serial connections are being used, it also helps make the system feel more responsive.

The rather drab user interface presented by the standard Unix utilities is often seen as a negative aspect of using Unix. On the positive side, however, the utilities can be very quick to use once you know them, and they will work from almost any kind of terminal. In fact, some special "escape sequences" have been standardized to allow programs to do rudimentary graphics on a wide variety of terminal devices. Such programs work as well for dial in users as for direct users.

More complex terminal based applications typically consult a database of terminal characteristics stored on the system so that they can take maximum advantage of whatever features the terminal supports. Many terminals do have function keys and arrow keys, for example, and some applications will be able to use them if they are available.

It is important to understand the difference between a Unix system supporting multiple terminal sessions and local area networked file server. When a file server is used, the workstations are fully functional computers. The central machine merely serves as a glorified disk. All the programs one runs actually execute on the workstations. In contrast, with a Unix system supporting terminal sessions, the terminals are dumb. They do not run any of the programs. All the programs are run on the one central machine. Only the screen output and the keyboard input are exchanged with the terminals.

To make matters more confusing, Unix systems can also be run as file servers in addition to their traditional role of supporting terminals. A common file serving protocol used in the Unix world is called the Network File System (NFS). However, Unix software exists that also allows a Unix machine to appear as a Windows server in a network of Windows clients.

Many people today use personal computers as if they were terminals. Thus most people who connect to a serial host like a Unix system do so by running a terminal emulator program on their personal desktop or laptop. There are several advantages to using a personal computer as a terminal rather than using a real terminal. First, terminal emulator programs can typically emulate several kinds of terminals. Also terminal emulator programs usually have facilities for recording the data sent to or received from the serial host, and for transferring files. In addition, some terminal programs allow you to interact with several different hosts at once (or the same host as several different users).

Of course most, Unix machines have a keyboard and monitor connected directly to them. This is what a personal computer user would expect. However, the traditional multi-user serial host does not normally need any kind of built in keyboard or monitor. All interaction done with such a system is done via a dumb terminal. The advantage of using a display device that's directly connected to the machine is that it offers very high speed display capability. In general, however, only one person can use it. Nevertheless, when high speed displays exist, real graphics become possible. In contrast, graphics cannot normally be done with slow serial connections. There's just too much information to transfer to the display.

Some time ago, MIT devised a standard way of sending graphics information to specialized "smart" terminals. Instead of sending data about every bit to draw, programs send graphics commands. In essence, these graphics commands are glorified escape sequences. Of course, the terminal has to be prepared to interpret these commands by running software called an "X server". As a result the terminal requires a powerful CPU of its own with lots of memory. The MIT system is called the "X Window System". It has become a standard in the Unix environment.

If you have an X terminal, your terminal can understand the graphics information sent to it via "X client programs" running on the host. The X terminal correctly handles the output from many client programs at once. Thus you can run multiple client programs on your host and display their output simultaneously on your X terminal. In fact, if your X terminal is on a network, you can run client programs on several hosts at once and display the output of all of them on the same X terminal. Hosts that support the X window system have a client program that will act like a simple serial terminal (e.g., xterm). Thus you can still run old style programs on your fancy X terminal simply by establishing one or more of these pseudo terminal sessions.

Just as personal computers can run serial terminal emulators, you also can buy X server software for personal computers. X servers are available for Windows, MacOS, OS/2. Some are commercial products, but free X servers can also be downloaded.