Operating Systems WT 2019/20
Total Page:16
File Type:pdf, Size:1020Kb
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#!!M 70 TSO UNIX RT#!! CP/M 75 DOS/VSE MVS/370 VM/370 UNIXV.7 VMS !.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 "IN 3.0 OS/2 85 AIX/370 OSF/! 4.3BSD VMS 5.4 "IN 3.! SYSTEM V.4 VSE/ESA MVS/ESA VM/ESA 90 AIX/ESA SOLARIS 2 GNU/LINUX 4.4BSD "IN NT OS/390 "IN 9X 95 z/VSE z/VM VMS 7.3 "IN 2000 z/OS 00 GNU/LINUX 2.6 SOLARIS !0 "IN XP WIN Server 200 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) 2.3-6.1 Solaris 2008 Mac OS X, 2008 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 Operating Systems (illumos, etc.) 21 2012 to 2015 2012 to 2015 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#!!M 70 TSO UNIX RT#!! CP/M 75 DOS/VSE MVS/370 VM/370 UNIXV.7 VMS !.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 "IN 3.0 OS/2 85 AIX/370 OSF/! 4.3BSD VMS 5.4 "IN 3.! SYSTEM V.4 VSE/ESA MVS/ESA VM/ESA 90 AIX/ESA SOLARIS 2 GNU/LINUX 4.4BSD "IN NT OS/390 "IN 9X 95 z/VSE z/VM VMS 7.3 "IN 2000 z/OS 00 GNU/LINUX 2.6 SOLARIS !0 "IN XP WIN Server 200 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.