Lecture 3 -- OS History and Evolution

A Quick History

1st Generation ('45 -- '55): Vacuum tubes, plugboards and cards. Bare hardware and simple monitors.

2nd Generation ('55 -- '65): Transistors. batch systems and spooling.

3rd Generation ('65 -- '80): Integrated circuits. Multiprogramming.

4th Generation ('80 onwards): Personal computers and workstations. Networks and distributed computing.

1st Generation: '45 -- '55

First machines built around the mid 40's, using vacuum tubes.

Manually rewired to change programs.

MTBF on the order of hours.

Programmed by individuals who knew the h/w intimately, in machine code, and later assembly code.

No OS, you wrote all the code yourself, or used others' routines.

Usually had to book time slots to use the computer. Often the slot was too short. Sometimes (if your program worked), the slot was too long.

Most programs were numerical calculations, very CPU-intensive.

Early '50s saw the introduction of punched cards to speed programming.

bare metal: n. 1. New computer hardware, unadorned with such snares and delusions as an operating system, a high-level language, or even an assembler. Commonly used in the phrase `programming on the bare metal', which refers to the arduous work needed to create these basic tools for a new machine. Real bare-metal programming involves things like building boot proms and BIOS chips, implementing basic monitors used to test device drivers, and writing the assemblers that will be used to write the compiler back ends that will give the new machine a real development environment.

Stone Age: n., adj. 1. In computer folklore, an ill-defined period from ENIAC (ca. 1943) to the mid-1950s; the great age of electromechanical dinosaurs, characterised by hardware such as mercury delay lines and/or relays.

2nd Generation: '55 -- '65

Introduction of the transistor to make computers more reliable.

Now possible to sell/lease computers to 3rd parties.

More efficient use: operators employed to run the machines for the customer.

Languages such as FORTRAN and COBOL invented.

User punches code/data on cards, gives job to operators, who would feed them to the computer, and return printout/new cards to user.

Hard to debug, slow turnaround, but CPU used more. CPU still idle between jobs.

Next idea: batch similar jobs to make the execution faster, e.g all FORTRAN jobs.

Jobs batched and copied from card to tape. the tape fed to the computer, and output sent to tape, converted to printout.

CPU less idle as the tape faster than cards to read. Still idle when reading from the tape.

First basic OS: load each job, run it, send output to tape, move onto next job.

The OS must be protected to prevent itself from being destroyed.

Jobs mainly scientific, and engineering calculations.

Bronze Age: n. 1. Era of transistor-logic, pre-ferrite-core machines with drum or CRT mass storage.

Aside -- User Traps

If the OS is protected, how does a job ask for services?

Special machine instructions were introduced which passed control from a job to one point in the OS -- a trap.

The job passes values in machine registers to indicate what service it requires.

The OS checks the request, and performs it, using a dispatch table to pass control to one of a set of OS service routines.

When the service has been performed, the OS returns control to the job, lowering the privileges back the the normal job level.

Thus, the job only has access to the privileged OS via a single, well-protected entry point.

This mechanism for obtaining OS services is known as a system call.

trap: 1. n. A program interrupt, usually an interrupt caused by some exceptional situation in the user program. In most cases, the OS performs some action, then returns control to the program. 2. vi. To cause a trap. ``These instructions trap to the monitor.'' Also used transitively to indicate the cause of the trap. ``The monitor traps all input/output instructions.''

3rd Generation: '65 -- '80

ICs make machines smaller and more reliable, although initially more expensive.

Companies found they outgrew their machines, but each model had different batch systems.

IBM decided to create a whole family of machines, each with similar h/w architecture, with a single OS that ran on every family member.

This was the System/360 family, and OS/360.

OS/360 ran to millions of lines of code, with a constant number of bugs, even in new system releases.

Usage moved to business work e.g inventories. More I/O intensive (reading/writing on tape). The CPU became idle waiting for the tape.

OS/360 introduced multiprogramming:

have >1 jobs in memory, protected from each other. As one job goes idle waiting for I/O, start up another job. This could give over 90% CPU utilisation.

Disks were used to cache/spool jobs. Disks were faster to access than tape, especially for random access.

Still slow job turnaround, users must wait for job to run/crash before any reprogramming.

Iron Age: n. In the history of computing, 1961-1971 - the formative era of commercial mainframe technology, when big iron dinosaurs ruled the earth. These began with the delivery of the first PDP-1, coincided with the dominance of ferrite core, and ended with the introduction of the first commercial microprocessor (the Intel 4004) in 1971.

Timesharing

Timesharing swapped very quickly between jobs, allowing input/output to come from terminals instead of tape/cards.

The OS also pre-empted running jobs, so that jobs which were waiting for I/O could recommence when the I/O was completed.

The Multics OS was designed at this time, to support hundreds of users simultaneously. Its design was good, and introduced many new ideas, but was very expensive h/w-wise, and fizzled out with the introduction of minicomputers.

Multics: n. [from ``MULTiplexed Information and Computing Service''] A late 1960s timesharing operating system co-designed by a consortium including MIT, GE, and Bell Laboratories. Very innovative for its time - among other things, it introduced the idea of treating all devices uniformly as special files. All the members but GE eventually pulled out after determining that second-system effect had bloated Multics to the point of practical unusability. One of the developers left in the lurch by the project's breakup was Ken Thompson, a circumstance which led directly to the birth of UNIX.

3rd Generation -- Part 2

Minis, introduced with the PDP-1 in 1961. 5% the cost of mainframes, but gave 10% -- 20% of their performance. Affordable by departments, not just companies.

Although Multics died, its ideas passed on to Unix. Unix was mostly written in `C', thus aiding ports to new hardware.

Both minis and mainframes got faster/cheaper and minis picked up more mainframe OS ideas.

4th Generation: '80 onwards

Micros brought computers to individuals. They began with 1st generation OS ideas, but are catching up.

Networking introduced, allowing machines to be connected over small/large distances.

Network OS makes machines on a network accessible.

Distributed OS makes machines on a network appear part of one machine.

Emphasis on user interface and applications.

killer micro: n. A microprocessor-based machine that infringes on mini, mainframe, or supercomputer performance turf. Often heard in ``No one will survive the attack of the killer micros!'', the battle cry of the downsizers. Used esp. of RISC architectures.

Warren Toomey wkt@cserve.cs.adfa.oz.au