BREVE STORIA DEI SISTEMI OPERATIVI
Storicamente i SO sono stati strettamente legati all'architettura degli elaboratori che li ospitavano.
Vedremo quindi le diverse generazioni di calcolatori e i SO che utilizzavano.
Si ritiene che il primo prototipo di calcolatore digitale si debba all'inglese Charles Babbage (1792-1871), che progettò la "macchina
analitica", un apparecchio meccanico che egli non poté mai vedere realizzato a causa dell'impossibilità tecnologica di allora di
realizzare gli ingranaggi e le parti meccaniche richieste con la dovuta precisione.
Da allora fino alla seconda guerra mondiale furono fatti pochissimi progressi nella realizzazione di calcolatori digitali.
Prima generazione (1945 -1955): valvole termoioniche e schede a spinotti
Occorre attendere il 1945 per vedere comparire la prima generazione di calcolatori automatici, quando vari professori universitari e
studiosi inglesi e americani (tra cui von Neumann) riuscirono a costruire delle enormi macchine di calcolo usando delle valvole
termoioniche.
Questi apparecchi avevano dimensioni tali da riempire intere stanze e una velocità di calcolo a dir poco modesta in confronto al più
scarso degli attuali personal computer.
Allora era lo stesso gruppo di persone ad occuparsi della progettazione, costruzione, programmazione e manutenzione di ogni
macchina.
La programmazione era fatta esclusivamente in linguaggio macchina, ossia secondo codici binari direttamente eseguiti dal processore,
spesso predisponendo una serie di spinotti inseriti su particolari schede adibite al controllo delle più elementari funzioni della
macchina.
I linguaggi di programmazione, compreso l'assembler, erano sconosciuti e di sistema operativo nemmeno si parlava.
Quasi tutte le applicazioni erano semplici calcoli numerici, come produzioni di tabelle di seni e coseni.
Fino alla metà degli anni 50 l'unico progresso riguardò la possibilità di scrivere i programmi su schede perforate, che potevano essere
lette direttamente dal calcolatore, anzi che usare gli spinotti.
Seconda generazione (1955 -1965): transistor e sistemi batch
A cambiare radicalmente la situazione intervenne l'introduzione dei transistor, che accrebbero l' affidabilità dei calcolatori così da
renderne possibile la commercializzazione.
Questi primi sistemi erano molto costosi (milioni di dollari) e potevano essere acquistati solo da grosse compagnie.
I calcoli che dovevano essere eseguiti dal computer erano memorizzati in un job, che poteva essere un singolo programma o un
insieme di programmi, scritto dal programmatore in Fortran o in Assembler e poi copiato su schede perforate e portato all'operatore
che gestiva il calcolatore.
Quando il calcolatore aveva terminato il job il risultato veniva prelevato dalla stampante e consegnato al programmatore.
Dato l'elevato costo delle macchine per ottimizzare l'uso del calcolatore, venne adottata la soluzione dei cosiddetti sistemi batch o
sistemi di elaborazione a lotti:
Un piccolo calcolatore (relativamente) poco costoso (tipicamente l'IBM 1401) leggeva un lotto (batch) di schede perforate sulle
quali erano memorizzati i job e li trasferiva su un nastro magnetico.
Quando il nastro aveva raccolto un lotto di job, veniva riavvolto e inserito in un calcolatore più potente (prevalentemente l'IBM
7094), dotato dell'antenato degli attuali sistemi operativi, l'IBSYS.
Questo si occupava di leggere in sequenza i vari job e di eseguirli uno dopo l'altro memorizzando i risultati su un secondo nastro
magnetico.
Una volta completato il lotto, i nastri d'ingresso e di uscita venivano rimossi e riavvolti e il nastro di uscita veniva inserito in un
altro IBM 1401 per stampare i dati ottenuti dall’ elaborazione.
Tramite l'utilizzo dei nastri d'ingresso e di uscita, veniva realizzata una "primordiale" forma di concorrenza, potendo eseguire l'
elaborazione dei lotti contemporaneamente alla memorizzazione del lotto successivo e alla stampa dei risultati di quello precedente.
Essenzialmente i calcolatori della seconda generazione furono usati per eseguire calcoli scientifici e ingegneristici.
Accanto all'IBSYS un sistema operativo tipico di quegli anni era il FMS (Fortran Monitor System).
Terza generazione (1965 -1980): circuiti integrati e multiprogrammazione
Proseguendo il nostro viaggio nel passato ci troviamo all'inizio degli anni 60, quando la maggior parte dei produttori di calcolatori
avevano due linee distinte di prodotti: da un lato i grossi calcolatori scientifici come l'IBM 7094, dall'altro i calcolatori commerciali di
più limitata capacità di elaborazione, come l’IBM 1041.
Per risolvere tutti i problemi correlati ad una tale situazione, l’IBM (allora in una situazione pressoché monopolistica) introdusse il
System/360, una serie di macchine che differivano solo per prezzo e prestazioni (si andava dal 1041 a macchine più potenti del 7094)
con la stessa architettura e lo stesso set di istruzioni, quindi compatibili a livello software.
Il sistema 360 fu la prima linea di calcolatori ad usare la tecnologia dei circuiti integrati (IC), allora a bassa scala di integrazione, che
portò innumerevoli vantaggi in termini di prezzo e prestazioni.
Inutile dire che il successo dei calcolatori compatibili convinse gli altri costruttori a fare altrettanto.
La compatibilità software fra i diversi computer fu un fattore di grande forza, ma anche un punto debole.
Principalmente ciò è dovuto al fatto che l'intenzione era di avere lo stesso software, SO compreso, su tutti i modelli, ma le grandi
differenze nelle caratteristiche hardware e nell'uso in ambito scientifico e commerciale avevano requisiti spesso in conflitto fra loro.
Il voluminoso sistema operativo che venne adottato, l'OS/360, era costituito da milioni di righe di codice assembler scritto da migliaia
di programmatori e conteneva centinaia di errori, che rendevano necessarie versioni sempre nuove, con le quali si correggevano i
vecchi e se ne introducevano di nuovi.
http://guidepc.altervista.org
Nonostante le enormi dimensioni e gli errori, i sistemi operativi della terza generazione seppero soddisfare gli utenti, anche grazie
all'introduzione di una nuova tecnica, la multiprogrammazione.
A causa dei costi elevatissimi dei calcolatori, si impose la necessità di ridurre la quantità di tempo in cui la CPU rimaneva inattiva,
permettendo ad un job di occupare il processore mentre un altro job era in attesa del completamento di un'operazione di I/O.
Per fare ciò la memoria principale venne divisa in partizioni, una dedicata al SO e le rimanenti assegnate avari job.
Le schede contenenti i job venivano subito lette e i job caricati su disco; in maniera analoga si operava per la gestione dell'uscita dei
risultati, eliminando così per sempre la "scocciatura" del continuo spostamento di nastri magnetici da un calcolatore all'altro. Questa
tecnica era detta SPOOLING (da SPOOL Simultaneous Perifepheral Operation On Line).
In questi sistemi, detti a lotti multiprogrammati, si presentarono per la prima volta nuove problematiche:
lo scheduling dei job (decidere quale tra i job nel disco caricare in memoria);
lo scheduling del processore (decidere quale tra i job in memoria mandare in esecuzione);
la gestione della memoria ( ottimizzarne l'utilizzo, date le limitate dimensioni);
la protezione reciproca (da eventuali interazioni indesiderate).
Il desiderio di un veloce tempo di risposta portò ben presto al time sharing (condivisione di tempo), una variante della
multiprogrammazione che permetteva a più utenti di avere un terminale ciascuno.
In questi sistemi la CPU veniva assegnata a turno ai vari utenti che ne richiedevano l'uso e venne reso disponibile un servizio
interattivo molto veloce, sfruttando i tempi di inattività degli utenti che
stavano pensando, parlando o prendendo il caffè per eseguire i job degli altri.
Il primo sistema operativo time sharing fu il CTSS (Compatible Time Sharing System), sviluppato dal 1962 al MIT.
Di qui nacque l'idea di una macchina che potesse supportare centinaia di utenti in time sharing secondo il modello della distribuzione
della corrente elettrica nelle case. Il sistema venne chiamato MULTICS (MULTiplexed Information and Computing Service) e
sviluppato a partire dalla seconda metà degli anni 60 ed era comunque ambizioso dato che intendeva gestire centinaia di utenti in time
sharing su una macchina che era poco più di un 286.
L 'idea comunque potrebbe riproporsi realizzando grossi server di rete a cui collegare macchine utenti semplici che fanno eseguire la
maggior parte del lavoro al server. Infatti gli utenti sono interessati a demandare alle società che gestiscono i server l' amministrazione
di sistemi sempre più complessi. L' e-commerce sembra si stia evolvendo verso questa soluzione.
Durante la terza generazione ebbe luogo una fenomenale crescita dei minicalcolatori, a partire dal PDP-l del 1961 a motivo dei bassi
costi (5% costo di un IBM 7094)
Nella serie dei PDP successivi, fino al PDP-ll , il più importante (per ragioni storiche) fu il PDP-7, sul quale venne sviluppata, da Ken
Thompson (uno degli informatici dei laboratori Bell che aveva collaborato alla realizzazione di MULTICS), una versione ridotta per
singolo utente di MULTICS, chiamata per gioco UNICS (Uniplexed Information and Computing Service), che non tardò a convincere
gli addetti ai lavori, diventando ben presto UNIX (implementato per la prima volta proprio su un PDP-ll/20).
L' evoluzione incredibile dei minicalcolatori portò ad una migrazione delle caratteristiche dei SO nati per mainframe verso i SO usati
su tali sistemi, cosicché UNIX poté avvantaggiarsi dei progressi compiuti negli anni precedenti.
Quarta generazione (1980): i Personal Computer
L 'avvento dei circuiti integrati su larga scala LSI (Large Scale Integration) portò, alla fine degli anni 70, alla costruzione dei primi
personal computer (inizialmente chiamati microcalcolatori), molto simili ai minicalcolatori come il PDP-ll, ma più economici.
Nel 1974 la INTEL costruì la il microprocessore 8080 e Gary Kildall costruì un controllore per floppy disk che collegò all'8080
realizzando il primo microcalcolatore con disco e scrisse il sistema operativo basato su disco CP/M (Control Programm for
Microcomputer).
Kildall fondò la Digital Research e fino al 1980 il CP/M domina il mercato dei microcalcolatori.
Nel 1980 IBM progetta il PC IBM e chiede Bill Gates la licenza del suo interprete BASIC e un sistema operativo adatto. Gates
suggerì di contattare la Digital ma Kildall rifiutò, prendendo la peggiore decisione aziendale. Gates allora acquistò (a 50 mila $) il
DOS (Disk Operatine System) da una piccola azienda e lo offrì con l'interprete BASIC alla IBM che accettò ma chiese alcune
modifiche. Gates assunse allora nella sua “Microsoft” Tim Paterson che aveva scritto il DOS e il sistema modificato divenne MSDOS che cominciò a dominare il mercato dei PC IBM.
Il successo dipese anche dalla scelta di Gates di vender MS-DOS alle aziende che producevano computer perché formasse un unico
pacchetto con la macchina, mentre Digital vendeva CP/M direttamente agli utenti.
Le successive versioni di MS DOS avevano caratteristiche più avanzate prese anche da UNIX.
Microsoft vendette anche un versione di UNIX per microcalcolatore detta XENIX.
Una nota particolare merita Linux, apparso per la prima volta nel 1991, che, nato su iniziativa di un giovane studente di nome Linus
Torvalds, che intendeva scrivere una versione professionale gratuita di un clone di UNIX detto MINIX, ha ben presto ricevuto
l'appoggio di numerosi sviluppatori sparsi in tutto il mondo, che hanno potuto contribuire al suo sviluppo soprattutto grazie ad
Internet. L' affermazione di questo SO è storia recente ed è tuttora in crescita.
Questi sistemi erano basati su comandi da tastiera, ma Engelbart inventò la GUI (Graphical User Interface) con icone, menù, finestre e
l'uso del mouse e Jobs, inventore del calcolatore Apple sfruttò questa idea e produsse Macintosh ottenendo un enorme successo
perché rese il PC accessibile a tutti.
Microsoft, influenzata da questo, produsse Windows, un sistema operativo che inizialmente (1985-1995) veniva eseguito sopra MSDOS ma che con le versioni 95 e poi 98 incorporò quasi tutte le caratteristiche del sistema operativo.
Anche UNIX ha un sistema a finestre detto X windows.
http://guidepc.altervista.org
Uno sviluppo interessante che iniziò a prendere piede durante la metà degli anni 80 è la crescita di reti di PC sui quali giravano i primi
sistemi operativi di rete e i sistemi operativi distribuiti.
http://guidepc.altervista.org