Storia dei Sistemi Operativi Corso di Storia dell’Informatica e del Calcolo Automatico SICSI VII ciclo Autore: Mauro Bellerè Definizione • Il Sistema Operativo consiste in una raccolta di software che nasconde (parzialmente) l'hardware, offrendo al programmatore una serie di istruzioni con le quali lavorare. • Fornisce all'utente una serie di comandi e servizi per fruire al meglio della potenza di calcolo di un qualsivoglia elaboratore elettronico, spaziando dal più piccolo dei palmari al più potente tra i Mainframe. Preistoria • Il primo computer (1843) fu progettato dal matematico inglese Charels Babbage (1792-1881), che, però non poté mai costruirlo per la tecnologia non adeguata dell'epoca • Babbage capì che avrebbe avuto bisogno di "un programma" per far funzionare il computer e per questo assunse Ada Lovelace, la "prima programmatrice", che ha dato il nome al linguaggio di programmazione ADA Prima dei Sistemi Operativi (1) • • • I primi computer moderni (1945-1955) (senza parti di tipo meccanico) sfruttavano la tecnologia a valvole ed anche se erano poco potenti ed affidabili, erano di dimensioni enormi e potevano occupare intere stanze Un team di specialisti costruiva, manteneva e programmava la macchina (appunto in linguaggio macchina) Non c'era sistema operativo, nemmeno l'assembler, bisognava eseguire un programma per volta (generalmente tabelle matematiche) sotto la supervisione del programmatore Prima dei Sistemi Operativi (2) • • • • Erano lentissimi e molto costosi Potevano permetterseli soltanto governi, grossi centri di calcolo o Università Erano molto inaffidabili, in quanto le valvole che li componevano si rompevano spesso Il programma da eseguire veniva inserito ad ogni esecuzione in codice binario attraverso dei primitivi lettori di schede perforate e dopo alcune ore il risultato veniva inviato ad una stampante Prima dei Sistemi Operativi (3) • • • • • Tra gli altri, riuscirono a costruire delle macchine per il calcolo automatico che fossero programmabili: Howard Aiken, Harward. Harvard MARK-1 ; John Von Neumann, Institute for Advanced Study in Princeton. EDVAC; J. P. Eckert e W. Mauchley, University of Pennsylvania. H. Goldstine, A. Turing. ENIAC ; K. Zuse, Germany. Z3. Macchina di Von Neuman • Programma memorizzabile come i dati • Istruzioni in memoria: decidere il programma specificando una porzione di memoria • Idea di John von Neumann (consulente ENIAC) • Proposta di nuovo calcolatore (1945): EDVAC (Electronic Discrete Variable Computer) • Nuovo elaboratore completo nel 1952 (IAS, presso Institute for Advanced Studies, Princeton) I primi Sistemi Operativi • • • • • La rivoluzionaria invenzione del transistor determina la nascita degli elaboratori di seconda generazione (1955-1965) e, di conseguenza, la nascita dei primi sistemi operativi L'utilizzo dei transistor per la costruzione dei computer permette di ridurne le dimensioni. I lettori di schede, i nastri magnetici e le stampanti cominciano a diventare di uso comune I computer iniziano ad essere costruiti per essere venduti, possono funzionare abbastanza a lungo per ammortizzare i costi di acquisto. Acquirenti: università, banche, grandi compagnie commerciali Permettono di usare i linguaggi di programmazione quali il Fortran e l'Assembler Si delinea sempre più marcatamente la separazione tra: - progettisti (di computer) - costruttori (di computer) - operatori (di computer) - programmatori - personale addetto al mantenimento (tecnici) Sistemi batch (1) • • • • Per eseguire dei programmi (o come venivano chiamati job), un programmatore doveva scrivere il proprio programma su carta, trasferirlo su schede, caricarlo nel computer, aspettare che il computer avesse eseguito il calcolo e quindi stampare il risultato Tale operazione era molto dispendiosa in fattori di tempo Si adottò la soluzione del sistema batch (a lotti): l'idea di base era quella di dividere i tre lavori, ovvero il caricamento dei dati, il calcolo e la stampa Tale tecnica permette - di ridurre il tempo raggruppando lavori simili (Fortran, Assembler, COBOL); - la sequenzializzazione automatica dei Job: automaticamente il controllo passa da un Job al successivo; - il caricamento automatico del compilatore; - il caricamento automatico dell'assemblatore. Sistemi batch (2) • • • L'idea è quella di impilare le schede perforate in un vassoio di input di un calcolatore di basso costo che ha solo il compito di trasferire i programmi, dello stesso linguaggio, su nastro magnetico in modo sequenziale. Ogni volta che una bobina è completata, viene montata sul calcolatore centrale, il main. A sua volta il main scrive l'output in modo sequenziale su un altro nastro magnetico. Tale nastro viene montato su di un altro computer di basse prestazioni per trascrivere l'output su carta, che verrà consegnata al programmatore. Sistemi batch (3) • • • Le macchine più utilizzate in quegli anni (‘60) per implementare sistemi batch erano gli IBM 1401, per il caricamento dei dati e la stampa; per il calcolo veniva impiegata, invece una macchina più potente e costosa, l'IBM 7094. Il Sistema Operativo di questi Mainframe doveva erogare pochi semplici servizi: gestione dell'input/output, interpretazione dei comandi contenuti nelle schede controllo e controllo dell'esecuzione di programmi, sia quelli lanciati dall'utente, sia le utilità di sistema. I sistemi operativi tipici per questi elaboratori, per lo più programmati in FORTRAN e in Assembler erano il FMS (Fortran Monitor System) e l'IBSYS I primi Sistemi Operativi • Durante l'esecuzione dei programmi, su nastro magnetico, vengono eseguiti anche altri programmi di gestione per l'esecuzione del compilatore Fortran, dell'assemblatore e per il corretto caricamento (delle istruzioni e dei dati) dei programmi scritti dai programmatori. • Tali operazioni di gestione vengono fornite da uno speciale programma, il primo rudimentale sistema operativo: monitor residente. La terza generazione • L’avvento dei circuiti integrati (IC) determinò la nascita dei computer di terza generazione (1965-80) e, di conseguenza, dei nuovi Sistemi Operativi • Nello stesso periodo i Sistemi Operativi iniziarono a supportare il DMA e lo SPOOL • Il DMA (Direct Memory Access) è il sistema che permette di trasferire interi blocchi di dati da memoria secondaria a memoria centrale in modo completamente indipendente dal processore, il quale può, nel frattempo, eseguire altre operazioni • Lo SPOOL (Simultaneous Peripheral Operations On Line) è un sistema che permette di gestire in maniera efficiente le code di job di stampa L’IBM System/360 • Nell'aprile del '64 l'IBM presentò una famiglia di computer chiamata IBM System/360, prima realizzazione di una netta distinzione tra architettura hardware e implementazione • Tutti gli elaboratori della suite, che andavano da piccole macchine a grandi Mainframe utilizzavano varianti dello stesso Sistema Operativo, l'OS/360, che supportava sia il calcolo scientifico che quello commerciale • Tuttavia questa eccessiva diversificazione tra i diversi computer rese difficile scrivere codice efficiente che rispettasse tutti i requisiti che erano in conflitto tra di loro • Il risultato fu un Sistema Operativo enorme e molto complesso scritto da migliaia di programmatori. OS/360 conteneva centinaia di errori che resero necessarie diverse revisioni. Purtroppo ogni nuova versione correggeva alcuni problemi, introducendone però degli altri La multiprogrammazione • Nell’OS/360 e in molti altri Sistemi Operativi dell'epoca venne implementata la multiprogrammazione, che rendeva possibile la presenza di più programmi in memoria contemporaneamente • Quando un job in esecuzione aveva bisogno di effettuare una operazione di I/O il Sistema Operativo lo sospendeva e al suo posto faceva girare un altro job • Quando l'operazione di I/O si concludeva il primo job tornava pronto all'esecuzione e attendeva il suo turno attendendo la sospensione di uno degli altri • Questo rendeva necessaria la presenza di hardware specializzato per proteggere i programmi dalle reciproche interferenze Il Timesharing (1) • Ogni utente ha un terminale proprio collegato al calcolatore centrale. • Ad ogni programma viene assegnato un intervallo di tempo durante il quale le sue istruzioni vengono eseguite dalla CPU • Scaduto tale intervallo di tempo, il processore continua (inizia) l'esecuzione delle istruzioni di un altro programma per la durata del prossimo intervallo di tempo Il Timesharing (2) • Nel 1962 venne realizzato al MIT il primo sistema di timesharing su un IBM 7094: il CTSS (Compatible Time Sharing System) • Fu in realtà il MULTICS la vera rivoluzione. Venne sviluppato congiuntamente dal MIT, dalla General Electric e dai Bell Labs, ed era in grado di supportare centinaia di utenti in timesharing • La realizzazione fu però molto più complessa del previsto, tanto che i Bell Labs abbandonarono il progetto • Tuttavia Multics introdusse molte nuove idee che influenzarono non poco i successivi Sistemi Operativi UNIX • UNIX fu progettato a partire dal 1969 da un gruppo di ricercatori della AT&T presso i Bell Labs, tra cui erano presenti Ken Thompson (che lavorò anche al progetto Multics), Dennis Ritchie e Douglas McIlroy • Esso prese notevole spunto dal padre Multics, e grazie all'ottimo lavoro di queste persone divenne un sistema molto interattivo, affidabile e ricco di funzionalità • Vennero sviluppate anche molte varianti di UNIX, come il System V, BSD (Berkley Software Distribution), Minix (usato in ambito didattico) e successivamente (sulla base di MINIX e UNIX) l'ormai famosissimo Linux sviluppato dallo studente finlandese Linus Torvalds. I Personal Computer (1) • Negli gli anni '80 grazie alla tecnologia LSI (large scale integration) la costruzione di chip integrati divenne massiccia e portò all'abbattimento dei prezzi dell'hardware, facendo sorgere l'era del Personal Computer • Queste macchine erano piccole, economiche ed avevano prestazioni simili a quelle dei calcolatori medio-grandi di 10-20 anni prima • La diffusione commerciale del computer ha dato impulso notevole allo sviluppo di interfacce “friendly”, che siano di facile utilizzo anche per chi non sia un esperto del settore. I Personal Computer (2) • I primi modelli erano dotati di Sistemi Operativi monoutente con accesso interattivo e supporto al timesharing • Il più importante tra i primi Sistemi Operativi per Personal computer era il CP/M-80 della Digital Research per le CPU 8080 / 8085 / Z-80. Era basato sui Sistemi Operativi della Digital Equipment Corporation specialmente quelli per l'architettura PDP-1 • MS-DOS (o PC-DOS quando fornito da IBM) era originariamente basato proprio sul CP/M-80. (per approfondimenti vedi: breve storia del DOS Microsoft vs Apple (1) • Steve Jobs era uno dei pochi che credeva nell'idea del Personal Computer. All'epoca era difficile immaginare cosa potesse farsene una persona di un computer in casa. Egli invece continuò per la sua strada fondando Apple Computer Inc. il 1° Aprile 1976 assieme a Steve Wozniak e Ronald Wayne. Jobs era convinto che il futuro del Personal Computer sarebbe stato legato all'interfaccia grafica. E così, ispirandosi a quella sviluppata da Xerox qualche anno prima (da un certo Doug Engelbart), Apple lanciò nel 1983 Lisa OS il primo sistema operativo per Personal Computer con interfaccia grafica e padre di MAC OS (1984) per Macintosh Microsoft vs Apple (2) • La GUI (Graphical User Interface) fu una vera rivoluzione tanto che di lì a poco Microsoft avrebbe commercializzato Windows (20 novembre 1985) e sarebbe nato l'X Window System in ambiente Unix (1984). All'inizio Windows non era definibile Sistema Operativo: era piuttosto un'estensione di MS-DOS. Fu con il rilascio di Windows 3.0, nel 1990, che Microsoft si impose sul mercato. Oltre alle maggiori performance che garantiva alle applicazioni rispetto alle versioni precedenti, Windows 3.0 forniva un ambiente multitasking migliorato rispetto alle precedenti versioni di MS-DOS, grazie all'introduzione del supporto alla memoria virtuale, e divenne così un degno rivale del Macintosh (su cui girava Mac OS) di Apple. A partire da Windows 3.1 fu introdotto il supporto alla multimedialità (perfezionato via via nelle successive release), mentre con l'introduzione di Windows 95 si passò definitivamente dal calcolo a 16 bit a quello a 32 bit. I giorni nostri (1) • Con l'uscita di Windows 95, Microsoft si afferma come leader mondiale nei sistemi operativi • Prima dell'uscita della versione successiva, Windows 98, venne sviluppato Windows NT. L'attuale evoluzione di Windows 98 è il Windows ME (Millenium), mentre NT è sviluppato in Windows 2000. Ad oggi è disponibile, ivece, Windows XP, sia per l'utenza domestica che professionale. • Sull'altro versante i sistemi operativi come Unix e Linux hanno continuato a crescere e implementano un'interfaccia grafica (molto simile a quella di Windows) chiamata X Windows. Altri sistemi operativi da menzionare sono il BeOS il quale è, ormai, completamente abbandonato a se stesso ed il QNX, sistema operativo real-time intenzionato a conquistare ampie fette di mercato. I giorni nostri (2) • Arriviamo infine ai sistemi operativi attuali, agli odierni e conosciutissimi WINDOWS VISTA e OS X, e i vari UBUNTU, SUSE, FEDORA. • Oggigiorno è inoltre disponibile una grande varietà di sistemi di elaborazione dalle più disparate dimensioni e performance a costi contenuti • Inoltre sono oggi sempre più diffuse le interconnessioni tra i vari dispositivi in modalità sia wired che wireless • Tutte queste innovazioni hanno portato allo sviluppo di sistemi operativi per le più svariate architetture, in particolare per dispositivi handheld come cellulari (tra i quali non si può non citare il Symbian OS) e PDA (con Windows Mobile e Palm OS). I Sistemi Operativi di rete (1) • Un fenomeno interessante che iniziò a prendere piede da metà degli anni '80 fu lo sviluppo delle reti di calcolatori, fenomeno che ha poi portato all'incredibile crescita di Internet • Nacquero così i Sistemi Operativi di rete e i Sistemi Operativi distribuiti • I primi altro non sono che normali Sistemi Operativi ai quali vengono aggiunti i software per il collegamento a macchine remote e quindi alle relative risorse condivise come file e stampanti • I secondi sono Sistemi Operativi che girano su sistemi a più processori oppure che inviano i processi da elaborare ad altri computer della rete I Sistemi Operativi di rete (2) • I Sistemi Operativi distribuiti sono dotati di particolari politiche di scheduling che permettono una efficace allocazione dei processi tra le CPU disponibili. Inoltre anche il sistema di archiviazione (file system) è unico, anche se in realtà è distribuito tra vari nodi della rete • Esempi di sistemi di rete sono tutte le versioni di Windows dalla NT 3.1 in poi, mentre UNIX e derivati fanno parte di entrambe le categorie in quanto supportano entrambe le tecnologie Appendice 1: Cronologia dei S.O. (‘60) • 1961 – CTSS • 1964 – OS/360 (annunciato) • 1965 – Multics (annunciato) – OS/360 (disponibile) – Tape Operating System (TOS) • 1966 – MS/8 • 1967 – CP/CMS – ITS – WAITS • 1969 – ACP (IBM) – TENEX – Unix • • • • Appendice 1: Cronologia dei S.O. (‘70) 1970 – DOS/BATCH 11 (PDP-11) 1971 – OS/8 1972 – MFT – MVT – RDOS – SVS – VM/CMS 1973 – Alto OS – RSX-11D – RT-11 – VME • 1974 – MVS (MVS/XA) • 1976 – CP/M – TOPS-20 • 1978 – Apple DOS 3.1 (Primo sistema operativo dell'Apple) – TRIPOS – VMS • 1979 – Apple DOS 3.2 Appendice 1: Cronologia dei S.O. (‘80) (1) • 1980 – – – – – Apple DOS 3.3 OS-9 QDOS SOS XDE (Tajo) (Xerox Development Environment) – Xenix • 1981 – MS-DOS – Xerox Star • 1982 – SunOS (1.0) – Ultrix • 1983 – Lisa OS – Coherent – ProDOS • 1984 – Macintosh OS (System 1.0) – QDOS (Sistema Operativo del Sinclair QL) – QNX – UniCOS • 1985 – – – – AmigaOS 1.0 Atari TOS MIPS OS Microsoft Windows 1.0 Appendice 1: Cronologia dei S.O. (‘80) (2) • 1986 – AIX – GS-OS – HP-UX • 1987 – AmigaOS 1.2 – Arthur – IRIX (3.0 è la prima versione prodotta dall'SGI) – Minix – OS/2 1.0 – Microsoft Windows 2.0 • 1988 – A/UX (Apple Computer) – AmigaOS 1.3 – LynxOS – MVS/ESA – OS/400 • 1989 – NEXTSTEP 1.0 – RISC OS – SCO Unix Release 3 Appendice 1: Cronologia dei S.O. (‘90) (1) • 1990 – AmigaOS 2.0 – BeOS (v1) – OSF/1 • 1991 – Linux • 1992 – AmigaOS 2.1, 3.0 – Solaris (2.0 è la prima versione non chiamata SunOS) – Windows 3.1 • 1993 – Plan 9 – FreeBSD – NetBSD – Slackware Linux – Windows NT 3.1 (Prima versione di NT) • 1994 – AmigaOS 3.1 – Red Hat Linux Appendice 1: Cronologia dei S.O. (‘90) (2) • 1995 – Digital Unix (detto anche Tru64) – OpenBSD – OS/390 – Windows 95 • 1996 – Debian GNU/Linux (Debian 1.1) [1] • 1997 – Mac OS 7.6 (Primo sistema operativo ufficialmente chiamato Mac OS) • 1998 – Windows 98 • 1999 – AmigaOS 3.5 – AROS (Parte per la prima volta in modalità standalone) – Mac OS 8 Appendice 1: Cronologia dei S.O. (2000) (1) • 2000 – AmigaOS 3.9 – AtheOS – Mac OS 9 – Mac OS X Public Beta – MorphOS 0.4 (Versione "free distro" per Amiga con schede PowerPC) – Windows 2000 – Windows ME • 2001 – AmigaOS 4 (Maggio, annunciato) – Mac OS X 10.0 (Cheetah) – Mac OS X 10.1 (Puma) – Windows XP – z/OS • 2002 – AROS (Interfaccia grafica nativa ZUNE) – Mac OS X 10.2 (Jaguar) – Syllable Appendice 1: Cronologia dei S.O. (2000) (2) • 2003 – Mac OS X 10.3 (Panther) – MorphOS 1.4.2 – Windows Server 2003 • 2004 – MorphOS 1.4.3 – AmigaOS 4.0 Developer PreRelease per gli AmigaONE • 2005 – – – – – – – – – – Gentoo Linux 2005.0 MorphOS 1.4.4 MacOS X 10.4 (Tiger) Windows Server 2003 x64 Edition Windows XP Professional x64 Edition MacOS X 10.4 (Versione Server) MorphOS 1.4.5 YellowTAB ZETA (BeOS Clone) 1.0 (1 luglio 2005) Windows Vista (Versione beta) Pardus 1.0 Appendice 1: Cronologia dei S.O. (2000) (3) • 2006 – Ubuntu 6.06 LTS – Pardus 2007 • 2007 – Mac OS X (Leopard) – Windows Vista – Windows codename Longhorn Server (Anno previsto per il rilascio di questo SO) • 2011 – Windows Vienna (Anno previsto per il rilascio di questo SO) Sitografia • http://it.wikipedia.org/wiki/Storia_dei_sistemi_op erativi • http://fabrizio.ciacchi.it/guide.php/soperativi.htm