The document provides a history of early computers and operating systems, beginning with Charles Babbage's analytical engine in the 1820s. It discusses the earliest digital computers in the 1940s-1950s and their use of serial processing. Batch processing was introduced with the IBM 1401 in 1959 to improve resource utilization. Multi-programming was developed in the 1960s to further increase CPU usage by running multiple jobs simultaneously. Time-sharing systems in the 1960s allowed for interactive use by multiple users through fast context switching. Modern operating systems evolved from these early batch processing and time-sharing systems.
2. Operating Systems I | Intro, History PT/FF 2014
The First Computer(s)
• 1801: Power loom driven by wooden punch cards
• 1822: Steam-driven analytical engine by Charles Babbage
• Mechanical decimal stored-program computer,
programmable by punch cards, support for calculation
and conditional statements
• Remained unbuilt; Ada Byron invented anyway
subroutine and looping as programming concepts
• 1890: U.S. census supported by Hollerith desk - punch
card reader, counting units, wall of dial indicators
• Built by Tabulating Machine Company, which
eventually became International Business Machines
• Invented the idea of output punch cards independent
from Babbage
2
(C) computersciencelab.com
3. Operating Systems I | Intro, History PT/FF 2014
The First Computer(s)
• 1944: Harvard Mark I developed in partnership between
Harvard and IBM (ballistic firing tables)
• First programmable digital computer made in the U.S.
• Constructed of switches, relays, rotating shafts, clutches
• Grace Hopper found the first computer bug, invented
the precessor of COBOL and the first compiler
• 1941: Konrad Zuse completed the work on the Z3
• First programmable electromechanical computer
• Punch film for program and data (lack of paper)
• Mapping of Boolean algebra to relays, developed
independently from original Shannon work
3
(C) computersciencelab.com
4. Operating Systems I | Intro, History PT/FF 2014
Von Neumann Architecture
4
(C) Wikipedia
• 1946: ENIAC as first fully electronic computer in the U.S.
• No program memory, re-wiring for each program
• EDVAC: Revolutionary extension with a stored program computer concept
by John von Neumann
• Memory contains both the program and the data
• Introduction of a general purpose computer concept
5. Operating Systems I | Intro, History PT/FF 2014
Serial Processing
• Computers from 1940 to 1955 were able to perform serial processing
• Programs for the machine (relays, vacuum tubes) written in assembly language
• Console with display lights, switches, punch card reader / plugboard, printer
• Re-wiring or punch card reading necessary for filling the program memory
• Program had complete control of the machine
for the entire run-time
• Manual reservation, user either finished early
(wasted time) or couldn‘t debug their problem
• Long setup time -
Job may involve running the compiler
program first and feeding in the output again
5
6. Operating Systems I | Intro, History PT/FF 2014
Batch Processing
• IBM 1401 - October 5th, 1959
• IBM‘s first affordable general purpose
computer, i.e. for accounting
• 1401 Processing Unit, 1402 Card
Read-Punch (250 cards/minute), printer
• First concepts of batch
processing for multiple
job input cards
• Operator loads monitor
to run batched jobs from
a prepared input tape
• Programs are constructed to branch back to the monitor after termination
(early Fortran language)
• First version of a scheduler, better utilization of the extremely expensive hardware
6
History of operating systemsHistory of operating systems
Batch processingBatch processing
The elements of the basicThe elements of the basic
IBM 1401 system are theIBM 1401 system are the
1401 Processing Unit,1401 Processing Unit,
1402 Card Read1402 Card Read--Punch,Punch,
and 1403 Printer.and 1403 Printer.
27
Punching cardsPunching cards MultiprocessingMultiprocessing
programmingprogramming
Job 3
Job 2
Job 1
OS
Memory
partitions
1.b Operating System History and Features
Simple batch systems
a) programmer brings cards to IBM 1401
b) 1401 reads batch of jobs onto tape
c) operator carries input tape to IBM 7094
d) 7094 does computing
e) operator carries output tape to 1401
f) 1401 prints output
Tanenbaum, A. S. (2001)
Modern Operating Systems (2nd Edition).
An early IBM batch system
7. Operating Systems I | Intro, History PT/FF 2014
Batch Processing
• A job control language (JCL) operates the
monitor application
• Instructions about the compiler to use, data
to work on etc. (Fortran prefix $)
• Early version of system calls
• Monitor needed to switch between itself and the
application
• Resident monitor parts always in memory
• Demands on hardware: memory protection,
timer, privileged instructions for I/O
• User mode vs. monitor mode (,system
mode‘, ,kernel mode‘, ,supervisor mode‘)
7
(C) Stallings
8. Operating Systems I | Intro, History PT/FF 2014
Multi-Programming
• Batch processing is nice, but jobs still spend too much time on I/O completion
• Idea: Load two jobs into memory at the same time
• While one is waiting for I/O results, switch to the other one
• Multiplexing of resources between a set of jobs became a basic monitor /
operating system task -> multi-programming or multi-tasking
• Goal: Maximize CPU utilization by sacrificing memory
8
1.b Operating System History and Features
Multiprogrammed batch systems
Solution?Solution: load two jobs in memory
while one job is waiting for I/O, the processor could switch to
the other job
(C) Stallings
9. Operating Systems I | Intro, History PT/FF 2014
Multi-Programming
9
1/26/2006 CS 446/646 - Principles of Operating Systems - 1. Introduction 52
1.b Operating System History and Features
Multiprogrammed batch systems
job 1 job 2 job 3
(a) serial uniprogramming
human
overhead
job 1 job 2 job 3
(b) batch uniprogramming
job 3job 1
job1
I/O
job2
I/O
job2
I/O(b’) batch uniprogramming showing actual CPU usage and I/O wait
time
job 3
job 1
job1
I/Ojob2
I/O
job2
I/O
. . . . . .
(c) multiprogramming Evolution of CPU utilization
human operator’s setup
(mount tape, etc.)
human operator’s
takedown (unmount)
spooling. . .
(C) CS446/646
10. Operating Systems I | Intro, History PT/FF 2014
Multi-Programming
10
(C) Stallings
11. Operating Systems I | Intro, History PT/FF 2014
Time Sharing
• Users started to demand interaction with their program, e.g. for retry on errors
• Perform multi-tasking, but act like the machine is solely used
• Advent of time-sharing / preemptive multi-tasking systems
• Goal: Minimize single user response time
• Extension of multi-programming to multiple interactive (non-batch) jobs
• Starting point for Unix operating systems in the 1960‘s
• Preemptive multi-tasking became a single user demand in modern times
• Leave application running while starting another one
• Pure batch processing systems are still significant (TPM, SAP R/3, HPC)
11
12. Operating Systems I | Intro, History PT/FF 2014
Time-Sharing
• Compatible Time-Sharing System (CTSS)
• Operating system developed at MIT,
first for the IBM 7094 in 1961
(32.768 36bit words memory)
• Program always loaded to start at the
location of the 5000th word
• System clock generated interrupts
roughly every 0.2 seconds
• At each clock interrupt, the system regained control and assigned the processor
to another user - time slicing
• Parts of the active program that would be overwritten are written to disk
• Other parts remained inactive in the system memory
• Direct successor MULTICS pioneered many modern operating system concepts
12
13. Operating Systems I | Intro, History PT/FF 2014
History of Modern Operating Systems
13
Operating SystemsOperating Systems EvolutionEvolution
55
60
65
70
75
IOCS
DOS/360 OS/360
TSO
IBSYS
CTSS
CP/CM5
MULTICS
UNIX
CP/M
RSX-11M
RT-11
28
75
80
85
90
95
00
03
DOS/VDSE
VS
VS/ESA
MVS/370
MVS/XA
MVS/ES
VM/370
VM/XA
VM/ESA
SYSTEM III
SYSTEM V
SYSTEM V.4
UNIXV.7
AIX/370
AIX
SUN OS
POSIX
SOLARIS 2
4.1BSD
4.2BSD
4.3BSD
4.4BSD
MACH
OSF/1
AIX/ESA
XENIX MS-DOS 1.0
CP/M
DR/DOS
OS/2WIN 3.0
WIN NT
WIN 2000
WIN 9X
WIN XP
LINUX
VMS 1.0
VMS 5.4
VMS 7.3
WIN 3.1
SOLARIS 10LINUX 2.6
WIN Server 2003
15. Operating Systems I | Intro, History PT/FF 2014
History of Unix
• First version of UNIX from Bell Labs in 1969 was influenced by CTSS and MULTICS
• Developed for PDP-7
• Hierarchical file system, processes, device files, command-line interpreter, tools
• Re-write from assembly language to C in 1973
• First widely available version 6 in 1976
• Bill Joy created the first Berkeley University Distribution (BSD) for UnixV6 in 1978
• Initial porting of Unix sources to VAX computers
• Release of vi editor and C shell with second version in 1979
• Many BSD contributions were adopted by Unix and others,
especially the TCP/IP stack implementation and Berkeley socket API
• Unix Version 7 (1978) is the conceptional ancestor of most modern UNIX systems
15
16. Operating Systems I | Intro, History PT/FF 2014
History of Unix
• 1983: AT&T UNIX System V released as one of the first commercial versions
• Interface definition still used for modern Unix systems such as AIX and Solaris
• Richard Stallman starts the GNU project for free Unix-compatible software
• 1988: Different APIs ultimately united by IEEE POSIX specification
• 1989: SVR4 unification of BSD and System V / Windows NT development starts
• 1991: Linus Torvalds begins to work an a Unix clone for IBM PCs - Linux
• 1992: Berkeley alumni‘s publish 386BSD port of BSD to Intel‘s 386,
foundation for later FreeBSD and NetBSD unix versions
• Since 1996: Unix trademark owned by Open Group, certification process
• 1997: Apple creates Darwin kernel out of the Mach kernel and Unix BSD parts
• 1999: System V release 4 (SVR4) binary format ELF became agreed Unix standard
16
17. Operating Systems I | Intro, History PT/FF 2014
History of Unix
17
from Wikipedia
19. Operating Systems I | Intro, History PT/FF 2014
History of Windows [Lucovsky]
• Initial team formed in November 1988
• 6 former Digital developers, one Microsoft guy
• Focus on secure, scalable SMP design for desktops and servers
• Original schedule for 18 months, missed by 3 years
• Goal setting
• Portability: Initial focus on Intel i860, intentionally late focus on i386
• Reliability: Nothing should be able to crash the OS (promise fulfilled)
• Extensibility and compatibility (DOS, OS/2, POSIX)
• After all of the above - performance
• NT 3.1 had 6-200 developers, NT 4.0 800 developers, Windows 2000 had 1400
19
20. Operating Systems I | Intro, History PT/FF 2014
Windows and Linux Evolution
• Windows and Linux kernels are based on foundations developed in the mid-1970s
20
Windows And Linux EvolutionWindows And Linux Evolution
Windows and Linux kernels are based on foundations developed inWindows and Linux kernels are based on foundations developed in
the midthe mid--1970s1970s
1970 1980 1990 2000
48
1970 1980 1990 2000
(see http://www.levenez.com for diagrams showing history of Windows & Unix)