Return to Contents
Historical Development of Operating Systems
- Each user was allocated a block of time to load and run his/her program,
which was input from punch cards.
- Debugging consisted of inspecting the internal machine states and
patching them directly.
- Device drivers (device-specific routines), functions, compilers, and
assemblers had to be explicitly loaded.
- The computer operator loaded the jobs and collected output.
- Users debugged programs by inspecting a core dump,
which was a hexadecimal listing of the exact contents of memory.
- The operator could batch jobs or rearrange them according
to priority, run time, etc.
offline input/output or simple batch system
- A separate computer was used for I/O.
- Several programs were first loaded onto tape, and then the full tape
was read into the main computer.
- Program output and dumps were written to tape,
and then printed from the tape by the auxiliary computer.
- A small resident monitor program
reset the main computer after each job,
interpreted some simple command language,
performed some simple accounting,
and did device-independent input and output.
spooling systems = multiprogrammed batch systems
- treated separately in text (Sections 22.214.171.124 and 1.4),
but were developed approximately simultaneously
- Example: IBM OS/360
- spool = simultaneous peripheral operations on line: program and data cards were first read to disk, input was thus available quickly when needed since reading from the disk was much faster than
reading from cards; output was first copied to disk, then printed from disk by a peripheral processor
- Disks were used for intermediate storage: faster than tapes
and allowed jobs to be processed in any order.
- A nucleus (or kernel)
contained routines to manage processes (called jobs) and device interrupts.
- Used interrupts to perform I/O (device tells computer when it
is finished a task)
- Device drivers included in the nucleus
- A process (running program) reqested assistance from the kernel
by making a service call = system call
- A scheduler sorted incoming jobs according
to priority and processor time needed
- Still used a human operator to mount data tapes needed by jobs,
make some policy decisions about which jobs to run,
and to restart the resident monitor if it failed or was overwritten
by a program
- Could do multiprogramming = multitasking: have more than one process somewhere between starting and finishing
interactive multiprogramming (timeshared system)
- Examples: CTSS, MULTICS, UNIX
- Users interact with the computer directly through a command language
at a terminal
- A command interpreter defines interface
- A session lasts from logon to logoff
- Text editors allow users to create programs, text files, and data
files online instead of with cards or tape
- User has the illusion that he/she is the only user of the
computer, but there may actually be many simultaneous users
- recent PC operating systems, such as OS/2 and Windows 95, are single-user
interactive multiprogrammed systems
- One user, one process at a time: personal computers
- Examples: CP/M (Control Program for Microcomputers), DOS (derived from Seattle Computing Product's
SCP-DOS clone of CP/M -- 1981)
- Processes can ``terminate and stay resident'' in memory, later to be
reactivated by interrupts from the keyboard (primitive multiprogramming)
- Large amounts of processing time can be devoted to providing a graphical user interface, since only one process is active at a time
- Communication between processes on different processors, e.g.,
e-mail, ftp, finger
- Separate computers share devices (printers)
- A user may execute processes on a different machine from the
one he/she is on
- Allows load sharing: automatic movement of processes to other sites
- Increased fault tolerance for data and processes
- Tightly coupled system: processors share a main memory ...
also called parallel system
- Loosely coupled system: processors have their own memory and
communicate by exchanging messages ...
what is usually meant by a distributed system
Release Dates for Recent Operating Systems
UNIX - 1973
DOS 1.0 - 1981
MacOS - about 1984
MacOS, System 5 - 1986
OS/2 1.0 - 1987
Windows3.0 - 1990
Windows3.1 - 1991
Windows95 - 1995
WindowsNT - 1993
WindowsNT, v.4 - 1996
Windows98 - 1998
Windows 2000, Windows ME - 2000
Windows XP - 2003
Return to Contents