Return to Contents



Historical Development of Operating Systems

open shop
- 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.

operator-driven shop
- 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 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)
- 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

interactive uniprogramming
- 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

distributed computing
- 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

Return to Contents