BS1 WS19/20 – topic-based slides History • Where the idea for Operating systems came from • Genealogy of Operating Systems • Critical Innovations
Hardware and Software Hardware Development Operating System Development Operating Systems 6
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 fjring tables) First programmable digital computer made in the U.S. ● Constructed of switches, relays, rotating shafts, clutches ● Grace Hopper found the fjrst computer bug, invented ● the predecessor of COBOL and the fjrst compiler 1941: Konrad Zuse completed the work on the Z3 ● First programmable electromechanical computer ● Punch fjlm 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 fjrst 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 fjlling the program memory ● Program had complete control of the machine ● for the entire run-time Manual reservation, user either fjnished early ● (wasted time) or could not debug their problem Long setup time - ● Job may involve running the compiler program fjrst and feeding in the output again Operating Systems 11
1 st Idea: Batch Processing A job control language (JCL) operates the monitor ● application Instructions about the compiler to use, data to work on etc. ● (Fortran prefjx $) 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
2 nd 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
2 nd Idea: Multiprogramming Operating Systems 15
2 nd 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
3 rd 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, fjrst 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 https://www.tele-task.de/lecture/video/7083/ IBSYS IOCS 55 from 49:50 60 CTSS DOS/360 OS/360 65 MULTICS CP/CM5 RSX-11M UNIX 70 TSO RT-11 CP/M UNIXV.7 VMS 1.0 75 DOS/VSE MVS/370 VM/370 4.1BSD XENIX MS-DOS 1.0 SYSTEM III DR/DOS SUN OS 80 4.2BSD VSE MVS/XA VM/XA SYSTEM V AIX OS/2 POSIX MACH WIN 3.0 85 OSF/1 4.3BSD VMS 5.4 WIN 3.1 AIX/370 SYSTEM V.4 VSE/ESA MVS/ESA VM/ESA 90 AIX/ESA SOLARIS 2 GNU/LINUX 4.4BSD WIN NT WIN 9X OS/390 95 z/VM z/VSE VMS 7.3 WIN 2000 z/OS 00 GNU/LINUX 2.6 WIN XP SOLARIS 10 WIN Server 2003 03 Operating Systems 20
1969 Unnamed PDP-7 operating system 1969 Open source Genealogy of Unix (simplifjed) Unix 1971 to 1973 1971 to 1973 Mixed/shared source Version 1 to 4 Unix 1974 to 1975 1974 to 1975 Closed source PWB/Unix Version 5 to 6 1978 1978 BSD Unix 1.0 to 2.0 1979 1979 Version 7 Unix/32V 1980 1980 BSD 3.0 to 4.1 Xenix System III 1981 1981 1.0 to 2.3 1982 1982 Xenix 3.0 BSD 4.2 1983 1983 SunOS System V 1 to 1.1 R1 to R2 1984 1984 SCO Xenix Unix 1985 1985 Version 8 SCO Xenix AIX System V V/286 BSD 4.3 Unix-like systems 1986 R3 1986 1.0 HP-UX SunOS 1.0 to 1.2 SCO Xenix 1.2 to 3.0 Unix 1987 V/386 1987 9 and 10 HP-UX (last versions 1988 BSD 4.3 System V 1988 2.0 to 3.0 from Tahoe R4 Bell Labs) SCO Xenix 1989 1989 BSD Net/1 V/386 BSD 4.3 1990 1990 Reno BSD Net/2 1991 1991 Linux 0.0.1 SunOS 4 Minix 386BSD NexTSTEP/ 1.x OPENSTEP 1992 1992 HP-UX 1.0 to 4.0 NetBSD 6 to 11 0.8 to 1.0 Linux BSD SCO UNIX UnixWare 1993 1993 0.95 to 1.2.x 4.4-Lite 3.2.4 1.x to 2.x & FreeBSD (System V 1994 1994 Lite Release 2 1.0 to R4.2) 2.2.x NetBSD 1995 1995 OpenBSD OpenServer 1.1 to 1.2 Solaris 1.0 to 2.2 5.0 to 5.04 1996 1996 2.1 to 9 1997 1997 NetBSD 1.3 FreeBSD 1998 1998 3.0 to 3.2 OpenServer Minix 1999 1999 Mac OS X AIX 5.0.5 to 5.0.7 2.x Server 3.0-7.2 2000 2000 2001 to 2004 2001 to 2004 Linux 2005 2.x 2005 UnixWare 7.x 2006 to 2007 2006 to 2007 (System V OpenBSD R5) 2.3-6.1 Solaris 2008 2008 Mac OS X, FreeBSD NetBSD 10 OS X, OpenServer 3.3-11.x HP-UX 1.3-7.1 2009 2009 macOS 6.x 11i+ DragonFly 10.0 to 10.12 Minix BSD 2010 2010 (Darwin 3.1.0-3.4.0 1.0 to 4.8 Operating Systems 21 1.2.1 to 17) OpenSolaris 2011 2011 & derivatives (illumos, etc.) Linux 2012 to 2015 2012 to 2015 3.x Solaris 11.0-11.3 2016 2016 Linux 4.x OpenServer 2017 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 https://www.tele-task.de/lecture/video/7083/ IBSYS IOCS 55 from 49:50 60 CTSS DOS/360 OS/360 65 MULTICS CP/CM5 RSX-11M UNIX 70 TSO RT-11 CP/M UNIXV.7 VMS 1.0 75 DOS/VSE MVS/370 VM/370 4.1BSD XENIX MS-DOS 1.0 SYSTEM III DR/DOS SUN OS 80 4.2BSD VSE MVS/XA VM/XA SYSTEM V AIX OS/2 POSIX MACH WIN 3.0 85 OSF/1 4.3BSD VMS 5.4 WIN 3.1 AIX/370 SYSTEM V.4 VSE/ESA MVS/ESA VM/ESA 90 AIX/ESA SOLARIS 2 GNU/LINUX 4.4BSD WIN NT WIN 9X OS/390 95 z/VM z/VSE VMS 7.3 WIN 2000 z/OS 00 GNU/LINUX 2.6 WIN XP SOLARIS 10 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 ● Specifjcation 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 effjciency – Hardware advancements required adaption of Operating Systems (e.g. mobile, NVRAM, ...) Operating Systems 26
Recommend
More recommend