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