The
history of computer operating systems recapitulates to
a degree the recent
history
of computer hardware.
Operating systems (OSes) provide a set of functions needed and used
by most application-programs on a computer, and the necessary
linkages for the control and synchronization of the computer's
hardware. On the first computers, without an operating system,
every program needed the full hardware specification to run
correctly and perform standard tasks, and its own drivers for
peripheral devices like printers
and card-readers. The growing complexity of hardware and
application-programs eventually made operating systems a
necessity.
Background
The user had sole use of the machine and would arrive armed with
program and data, often on punched paper and tape. The program
would be loaded into the machine, and the machine would be set to
work until the program completed or crashed. Programs could
generally be debugged via a front panel using switches and lights.
It is said that
Alan Turing was a master
of this on the early
Manchester Mark
1 machine, and he was already deriving the primitive conception
of an
operating system from the principles of the
Universal Turing machine.
Later machines came with
libraries
of support code, which would be linked to the user's program to
assist in operations such as input and output. This was the genesis
of the modern-day operating system.
However, machines still ran a single job
at a time; at Cambridge University
in England the job queue
was at one time a washing line from which tapes were hung with
different colored clothes-pegs to indicate
job-priority.
As machines became more powerful, the time to run programs
diminished and the time to hand off the equipment became very large
by comparison. Accounting for and paying for machine usage moved on
from checking the wall clock to automatic logging by the computer.
Run queues evolved from a literal queue of people at the door, to a
heap of media on a jobs-waiting table, or batches of punch-cards
stacked one on top of the other in the reader, until the machine
itself was able to select and sequence which
magnetic tape drives were online. Where
program developers had originally had access to run their own jobs
on the machine, they were supplanted by dedicated machine operators
who looked after the well-being and maintenance of the machine and
were less and less concerned with implementing tasks manually. When
commercially available computer centers were faced with the
implications of data lost through tampering or operational errors,
equipment vendors were put under pressure to enhance the
runtime libraries to prevent misuse of
system resources. Automated monitoring was needed not just for
CPU usage but for counting
pages printed, cards punched, cards read, disk storage used and for
signaling when operator intervention was required by jobs such as
changing magnetic tapes.
All these features were building up towards the repertoire of a
fully capable operating system. Eventually the
runtime libraries became an amalgamated
program that was started before the first customer job and could
read in the customer job, control its execution, clean up after it,
record its usage, and immediately go on to process the next job.
Significantly, it became possible for programmers to use symbolic
program-code instead of having to hand-encode binary images, once
task-switching allowed a computer to perform translation of a
program into binary form before running it. These resident
background programs, capable of managing multistep processes, were
often called monitors or monitor-programs before the term OS
established itself.
An underlying program offering basic hardware-management,
software-scheduling and resource-monitoring may seem a remote
ancestor to the user-oriented OSes of the
personal computing era. But there has been
a shift in meaning. With the era of commercial computing, more and
more "secondary" software was bundled in the OS package, leading
eventually to the perception of an OS as a complete user-system
with utilities, applications (such as text editors and file
managers) and configuration tools, and having an integrated
graphical user interface.
The true descendant of the early operating systems is what is now
called the "
kernel". In
technical and development circles the old restricted sense of an OS
persists because of the continued active development of
embedded operating systems for all kinds of
devices with a data-processing component, from hand-held gadgets up
to industrial robots and
real-time control-systems, which do not
run user-applications at the front-end. An embedded OS in a device
today is not so far removed as one might think from its ancestor of
the 1950s.
The broader categories of systems and application software are
discussed in the
computer software
article.
The mainframe era
It is generally thought that the first operating system used for
real work was
GM-NAA I/O, produced in
1956 by
General Motors' Research
division for its
IBM 704. Most other early
operating systems for IBM mainframes were also produced by
customers.
Early operating systems were very diverse, with each vendor or
customer producing one or more operating systems specific to their
particular
mainframe computer.
Every operating system, even from the same vendor, could have
radically different models of commands, operating procedures, and
such facilities as debugging aids. Typically, each time the
manufacturer brought out a new machine, there would be a new
operating system, and most applications would have to be manually
adjusted, recompiled, and retested.
Systems on IBM hardware
The state of affairs continued until the 1960s when IBM, already a
leading hardware vendor, stopped the work on existing systems, and
put all the effort into developing the
System/360 series of machines, all of which used
the
same instruction architecture. IBM intended to develop
also a single operating system for the new hardware, the
OS/360. The problems encountered in the development
of the OS/360 are legendary, and are described by
Fred Brooks in
The Mythical Man-Month—a book
that has become a classic of
software engineering. Because of
performance differences across the hardware range and delays with
software development, a whole family of operating systems were
introduced instead of a single OS/360.
IBM wound up releasing a series of stop-gaps followed by three
longer-lived operating systems:
- OS/MFT for mid-range systems. This had one successor, OS/VS1,
which was discontinued in the 1980s.
- OS/MVT for large systems. This was similar in most ways to
OS/MFT (programs could be ported between the two without being
re-compiled), but has more sophisticated
memory management and a time-sharing
facility, TSO. MVT had several
successors including the current z/OS.
- DOS/360 for small System/360 models had
several successors including the current z/VSE. It was significantly different from OS/MFT and
OS/MVT.
IBM maintained full compatibility with the past, so that programs
developed in the sixties can still run under z/VSE (if developed
for DOS/360) or z/OS (if developed for OS/MFT or OS/MVT) with no
change.
Other mainframe operating systems
Control Data Corporation
developed the
SCOPE operating
system in the 1960s, for batch processing. In cooperation with the
University of Minnesota, the
KRONOS and later
the
NOS operating systems were
developed during the 1970s, which supported simultaneous batch and
timesharing use. Like many commercial timesharing systems, its
interface was an extension of the
DTSS time
sharing system, one of the pioneering efforts in timesharing and
programming languages.
In the late 1970s, Control Data and the University of Illinois
developed the
PLATO system, which used
plasma panel displays and long-distance time sharing networks.
PLATO was remarkably innovative for its time; the shared memory
model of PLATO's
TUTOR
programming language allowed applications such as real-time
chat and multi-user graphical games.
UNIVAC, the first commercial computer
manufacturer, produced a series of
EXEC
operating systems. Like all early main-frame systems, this was a
batch-oriented system that managed magnetic drums, disks, card
readers and line printers. In the 1970s, UNIVAC produced the
Real-Time Basic (RTB) system to support large-scale time sharing,
also patterned after the Dartmouth BASIC system.
Burroughs Corporation
introduced the B5000 in 1961 with the MCP (
Master Control Program)
operating system. The B5000 was a stack machine designed to
exclusively support high-level languages with no machine language
or assembler and indeed the MCP was the first OS to be written
exclusively in a high-level language (
ESPOL, a
dialect of
ALGOL). MCP also introduced many
other ground-breaking innovations, such as being the first
commercial implementation of
virtual
memory. MCP is still in use today in the
Unisys ClearPath/MCP line of computers.
Project MAC at MIT, working with GE,
developed
Multics and
General
Electric Comprehensive Operating Supervisor (GECOS), which
introduced the concept of ringed security privilege levels. After
Honeywell acquired GE's computer business,
it was renamed to General Comprehensive Operating System
(GCOS).
Digital Equipment
Corporation developed many operating systems for its various
computer lines, including
TOPS-10 and
TOPS-20 time sharing systems for the 36-bit
PDP-10 class systems. Prior to the widespread use of UNIX, TOPS-10
was a particularly popular system in universities, and in the early
ARPANET community.
In the late 1960s through the late 1970s, several hardware
capabilities evolved that allowed similar or ported software to run
on more than one system. Early systems had utilized
microprogramming to implement features on
their systems in order to permit different underlying architecture
to appear to be the same as others in a series. In fact most 360's
after the 360/40 (except the 360/165 and 360/168) were
microprogrammed implementations. But soon other means of achieving
application compatibility were proven to be more significant.
Minicomputers and the rise of UNIX
The beginnings of the
UNIX operating system was
developed at AT&T Bell Laboratories in the late 1960s. Because
it was essentially free in early editions, easily obtainable, and
easily modified, it achieved wide acceptance. It also became a
requirement within the Bell systems operating companies. Since it
was written in a high level
C
language, when that language was ported to a new machine
architecture
UNIX was also able to be ported.
This portability permitted it to become the choice for a second
generation of minicomputers and the first generation of
workstations. By widespread use it exemplified
the idea of an operating system that was conceptually the same
across various hardware platforms. It still was owned by AT&T
and that limited its use to groups or corporations who could afford
to license it. It became one of the roots of the
open source movement.
Other than that Digital Equipment Corporation created the simple
RT-11 system for its 16-bit
PDP-11 class machines, and the
VMS
system for the 32-bit VAX computer.
Another system which evolved in this time frame was the
Pick operating system. The Pick system
was developed and sold by Microdata Corporation who created the
precursors of the system. The system is an example of a system
which started as a database application support program and
graduated to system work.
The case of 8-bit home computers and game consoles
Home computers
Although most small 8-bit
home
computers of the 1980s, such as the
Commodore 64, the
Atari
8-bit, the
Amstrad CPC,
ZX Spectrum series and others
could use
a disk-loading operating system, such as
CP/M
or
GEOS they could
generally work
without one. In fact, most if not all of
these computers shipped with a built-in
BASIC interpreter on ROM, which
also served as a crude operating system, allowing minimal
file management operations (such as deletion,
copying, etc.) to be performed and sometimes disk formatting, along
of course with
application
loading and execution, which sometimes required a non-trivial
command sequence, like with the
Commodore
64.
The fact that the majority of these machines were bought for
entertainment and educational purposes and were seldom used for
more "serious" or business/science oriented applications, partly
explains why a "true" operating system was not necessary.
Another reason is that they were usually single-task and
single-user machines and shipped with minimal
amounts of
RAM, usually between
4 and 256
kilobytes, with 64 and 128 being
common figures, and 8-bit processors, so an operating system's
overhead would likely compromise the
performance of the machine without really being necessary.
Even the available
word processor and
integrated software applications
were mostly self-contained programs which took over the machine
completely, as also did
video
games.
Game consoles and video games
Since virtually all video game consoles and
arcade cabinets designed and built after 1980
were true digital machines (unlike the analog
Pong clones and derivatives), some of them carried
a minimal form of
BIOS or built-in game, such
as the
ColecoVision, the
Sega Master System and the
SNK Neo Geo.
There were however successful designs where a BIOS was not
necessary, such as the
Nintendo NES and its
clones.
Modern day game consoles and videogames, starting with the
PC-Engine, all have a minimal BIOS that also
provides some interactive utilities such as
memory card management,
Audio or
Video CD playback,
copy
protection and sometimes carry
libraries for developers to use etc.Few of these
cases, however, would qualify as a "true" operating system.
The most notable exceptions are probably the
Dreamcast game console which includes a minimal
BIOS, like the
PlayStation, but can load
the
Windows CE operating system from the
game disk allowing easily porting of games from the
PC world, and the
Xbox
game console, which is little more than a disguised Intel-based
PC running a secret, modified
version of
Microsoft Windows in
the background. Furthermore, there are
Linux
versions that will run on a
Dreamcast and
later game consoles as well.
Long before that,
Sony had released a kind of
development kit called the
Net Yaroze for its first
PlayStation platform, which provided a series of
programming and developing tools to be used with a normal PC and a
specially modified "Black PlayStation" that could be interfaced
with a PC and download programs from it. These operations require
in general a functional OS on both platforms involved.
In general, it can be said that videogame consoles and arcade coin
operated machines used at most a built-in
BIOS
during the 1970s, 1980s and most of the 1990s, while from the
PlayStation era and beyond they started
getting more and more sophisticated, to the point of requiring a
generic or custom-built OS for aiding in development and
expandability.
The personal computer era: Apple, Amiga, PC/MS/DR-DOS and
beyond
The development of microprocessors made inexpensive computing
available for the
small business and
hobbyist, which in turn led to the widespread use of
interchangeable hardware components using a common interconnection
(such as the
S-100, SS-50,
Apple II,
ISA, and
PCI buses), and an increasing need for 'standard' operating
systems to control them. The most important of the early OSes on
these machines was Digital Research's CP/M-80 for the 8080 / 8085 /
Z-80 CPUs. It was based on several Digital Equipment Corporation
operating systems, mostly for the PDP-11 architecture. Microsoft's
first Operating System,
M-DOS, was designed
along many of the PDP-11 features, but for microprocessor based
system. MS-DOS (or PC-DOS when supplied by IBM) was based
originally on CP/M-80. Each of these machines had a small boot
program in ROM which loaded the OS itself from disk. The BIOS on
the IBM-PC class machines was an extension of this idea and has
accreted more features and functions in the 20 years since the
first IBM-PC was introduced in 1981.
The
decreasing cost of display equipment and processors made it
practical to provide graphical user interfaces for many operating
systems, such as the generic X Window
System that is provided with many UNIX systems, or other
graphical systems such as Microsoft
Windows, the RadioShack Color
Computer's OS-9 Level II/MultiVue, Commodore's AmigaOS, Apple
's Mac OS, or even IBM's OS/2. The original GUI was developed at Xerox
Palo Alto Research Center in the early '70s (the Alto computer
system) and imitated by many vendors.
The rise of virtualization
Operating systems were originally running directly on the hardware
itself, and provided services to applications. With
VM/CMS on
System/370,
IBM introduced the notion of
virtual machine, where the operating system
itself runs under the control of an
hypervisor, instead of being in direct control of
the hardware.
VMware popularized this
technology on
personal computers.
Over time, the line between virtual machines monitors and operating
systems was blurred:
- Hypervisors grew more complex, gaining their own application
programming interface, memory management or file system
- Virtualization becomes a key feature of operating systems, as
exemplified by Hyper-V in Windows Server 2008 or HP Integrity Virtual Machines
in HP-UX
- In some systems, such as POWER5 and
POWER6-based servers from IBM, the hypervisor is no longer optional
- Applications have been re-designed to run directly on a virtual
machine monitor
In many ways, virtual machine software today plays the role
formerly held by the operating system, including managing the
hardware resources (processor, memory, I/O devices), applying
scheduling policies, or allowing system administrators to manage
the system.
See also
References
Further reading
- A useful and readable (albeit somewhat opinionated) book
dealing with operating system history.