<<

Operating Systems WT 2019/20

Abridged History of Operating Systems Something to Ponder

What is an ? 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 – 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

● Console with display lights, switches, punch card reader / plugboard,

● 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 - may involve running the compiler program first and feeding in the output again

Operating Systems 11 1st Idea:

● A 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: , 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 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 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”) ● (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: / 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 &

● 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 roughly every 0.2 seconds ● At each clock , 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 RT-11 CP/M 75 DOS/VSE MVS/370 VM/370 UNIXV.7 VMS 1.0 4.1BSD 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/ 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 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 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 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 , , mutual exclusion ● Real-Time Systems ( 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