Operating Systems WT 2019/20
Abridged History of Operating Systems Something to Ponder
What is an Operating System? try to come up with a definition of what the term operating system means.
Discuss your findings amongst yourselves.
Operating Systems 2 Operating System Definition
My attempt: An operating system is a program that runs and orchestrates other programs, based on a set of optimization criteria.
Operating Systems 5 Hardware and Software
Hardware Development
Operating System Development
Operating Systems 6 The First Computer
Q: What was the first computer?
Operating Systems 7 First Computers
● 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; Based on concepts, Ada Byron later invented subroutines and loops 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
Operating Systems 8 First Computers
● 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 predecessor 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
● Plankalkül – programming language Operating Systems 9 Von Neumann Architecture
● 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
Operating Systems 10 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 could not debug their problem
● Long setup time - Job may involve running the compiler program first and feeding in the output again
Operating Systems 11 1st Idea: 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)
Operating Systems 13 2nd Idea: Multiprogramming
● Batch processing increases utilization, but jobs still need to wait for I/O operations ● Idea: Load multiple jobs into memory at the same time ● While one is waiting for I/O results, switch to another 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
Operating Systems 14 2nd Idea: Multiprogramming
Operating Systems 15 2nd Idea: Multiprogramming
● Multiprogramming begets interactivity ● Idea: add dedicated job that is always loaded and processes user input (“terminal”) ● Time Sharing Option (TSO) on IBM Mainframe ● Decouples the user from the processing ● But: multiprogramming is cooperative → terminal is unresponsive while the machine is occupied
Operating Systems 16 3rd Idea: Preemption / 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 exclusively 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 ● Preemptive multi-tasking became a single user demand in modern times ● Leave one application running while starting another one ● Pure batch processing systems still exist: TPM, SAP R/3, HPC Operating Systems 17 Time Sharing – CTSS & MULTICS
● 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
Operating Systems 18 Time Sharing – CTSS & MULTICS
Source Code: ● https://gitlab.hpi.de/osm-teaching/opsys19labs/multics ● https://gitlab.hpi.de/osm-teaching/opsys19labs/ctss
… and more
Operating Systems 19 Genealogy of Operating Systems
55 IOCS IBSYS https://www.tele-task.de/lecture/video/7083/
60 CTSS from 49:50
65 DOS/360 OS/360 MULTICS CP/CM5 RSX-11M 70 TSO UNIX RT-11 CP/M 75 DOS/VSE MVS/370 VM/370 UNIXV.7 VMS 1.0 4.1BSD XENIX MS-DOS 1.0 SYSTEM III DR/DOS 80 SUN OS VSE MVS/XA VM/XA SYSTEM V 4.2BSD AIX POSIX MACH WIN 3.0 OS/2 85 AIX/370 OSF/1 4.3BSD VMS 5.4 WIN 3.1 SYSTEM V.4 VSE/ESA MVS/ESA VM/ESA 90 AIX/ESA SOLARIS 2 GNU/LINUX 4.4BSD WIN NT OS/390 WIN 9X 95 z/VSE z/VM VMS 7.3 WIN 2000 z/OS 00 GNU/LINUX 2.6 SOLARIS 10 WIN XP WIN Server 2003 03 Operating Systems 20 1969 Unnamed PDP-7 operating system 1969 Open source 1971 to 1973 Unix 1971 to 1973 Version 1 to 4 Mixed/shared source
1974 to 1975 Unix Closed source 1974 to 1975 Version 5 to 6 PWB/Unix Genealogy1978 of Unix (simplified) 1978 BSD 1.0 to 2.0 Unix 1979 Version 7 1979 Unix/32V 1980 1980 BSD 3.0 to 4.1 Xenix System III 1981 1.0 to 2.3 1981 1982 1982 Xenix 3.0 1983 BSD 4.2 SunOS 1983 1 to 1.1 System V R1 to R2 1984 SCO Xenix 1984 Unix 1985 Version 8 SCO Xenix 1985 AIX V/286 System V 1986 Unix-like systems BSD 4.3 1.0 R3 HP-UX 1986 SunOS 1.0 to 1.2 Unix 1.2 to 3.0 SCO Xenix 1987 9 and 10 V/386 1987 (last versions HP-UX 1988 BSD 4.3 System V 2.0 to 3.0 1988 from Tahoe R4 1989 Bell Labs) SCO Xenix 1989 BSD Net/1 V/386 BSD 4.3 1990 Reno 1990 BSD Net/2 1991 Linux 0.0.1 1991 SunOS 4 Minix 386BSD 1.x NexTSTEP/ 1992 OPENSTEP HP-UX 1992 1.0 to 4.0 NetBSD 6 to 11 Linux BSD 0.8 to 1.0 1993 SCO UNIX UnixWare 1993 0.95 to 1.2.x 4.4-Lite 3.2.4 1.x to 2.x & 1994 FreeBSD (System V 1994 1.0 to Lite Release 2 R4.2) 1995 2.2.x NetBSD 1995 OpenBSD OpenServer 1.1 to 1.2 1.0 to 2.2 Solaris 1996 5.0 to 5.04 2.1 to 9 1996 1997 1997 NetBSD 1.3 1998 FreeBSD 1998 3.0 to 3.2 Minix OpenServer 1999 Mac OS X AIX 5.0.5 to 5.0.7 1999 2.x Server 2000 3.0-7.2 2000
2001 to 2004 2001 to 2004 Linux 2005 2.x UnixWare 2005 7.x 2006 to 2007 (System V 2006 to 2007 OpenBSD R5) 2008 2.3-6.1 Solaris 2008 Mac OS X, FreeBSD NetBSD 10 OS X, 3.3-11.x 1.3-7.1 OpenServer HP-UX 2009 macOS 6.x 11i+ 2009 10.0 to 10.12 DragonFly Minix BSD 2010 3.1.0-3.4.0 (Darwin 2010 1.2.1 to 17) 1.0 to 4.8 OpenSolaris 2011 & derivatives 2011 Linux (illumos, etc.) 2012 to 2015 Operating Systems 2012 to 2015 21 3.x Solaris 11.0-11.3 2016 Linux 2016 4.x OpenServer 2017 10.x 2017 Unix History https://www.tuhs.org/
Operating Systems 22 Genealogy of Linux
https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg
(too large for this slide)
Operating Systems 23 Genealogy of Operating Systems
55 IOCS IBSYS https://www.tele-task.de/lecture/video/7083/
60 CTSS from 49:50
65 DOS/360 OS/360 MULTICS CP/CM5 RSX-11M 70 TSO UNIX RT-11 CP/M 75 DOS/VSE MVS/370 VM/370 UNIXV.7 VMS 1.0 4.1BSD XENIX MS-DOS 1.0 SYSTEM III DR/DOS 80 SUN OS VSE MVS/XA VM/XA SYSTEM V 4.2BSD AIX POSIX MACH WIN 3.0 OS/2 85 AIX/370 OSF/1 4.3BSD VMS 5.4 WIN 3.1 SYSTEM V.4 VSE/ESA MVS/ESA VM/ESA 90 AIX/ESA SOLARIS 2 GNU/LINUX 4.4BSD WIN NT OS/390 WIN 9X 95 z/VSE z/VM VMS 7.3 WIN 2000 z/OS 00 GNU/LINUX 2.6 SOLARIS 10 WIN XP WIN Server 2003 03 Operating Systems 24 POSIX
● family of standards for maintaining compatibility between operating systems ● on source code level ● on system tools level ● Specification follows existing UNIX implementations ● committee does not invent functionality
Operating Systems 25 Summary
Operating System Development intricately tied to: ● Utilization: Cost of Labour vs, Cost of Machine ● Use case – commercial / military / government – still relevant today ● Hardware Development – Operating Systems features required implementation in hardware for efficiency – Hardware advancements required adaption of Operating Systems (e.g. mobile, NVRAM, ...)
Operating Systems 26 Critical Innovations
● Batch Job Processing ● Linkage of library routines to programs ● Management of files, I/O devices, secondary storage ● Multiprogramming ● Resource management and sharing for multiple programs ● Quasi-simultaneous program execution ● Single user
Operating Systems 27 Critical Innovations
● Multiuser/Timesharing Systems ● Management of multiple simultaneous users interconnected via terminals ● Resource management: CPU scheduling, spooling, mutual exclusion ● Real-Time Systems (process control systems) ● Management of time-critical processes ● High requirements with respect to reliability and availability
Operating Systems 28 Genealogy of Operating Systems
55 IOCS IBSYS https://www.tele-task.de/lecture/video/7083/
60 CTSS from 49:50
65 DOS/360 OS/360 MULTICS CP/CM5 RSX-11M 70 TSO UNIX RT-11 CP/M 75 DOS/VSE MVS/370 VM/370 UNIXV.7 VMS 1.0 4.1BSD XENIX MS-DOS 1.0 SYSTEM III DR/DOS 80 SUN OS VSE MVS/XA VM/XA SYSTEM V 4.2BSD AIX POSIX MACH WIN 3.0 OS/2 85 AIX/370 OSF/1 4.3BSD VMS 5.4 WIN 3.1 SYSTEM V.4 VSE/ESA MVS/ESA VM/ESA 90 AIX/ESA SOLARIS 2 GNU/LINUX 4.4BSD WIN NT OS/390 WIN 9X 95 z/VSE z/VM VMS 7.3 WIN 2000 z/OS 00 GNU/LINUX 2.6 SOLARIS 10 WIN XP WIN Server 2003 03 Operating Systems 29