La storia dei sistemi operativi si divide in 5 generazioni.

1° generazione (1945-1955) - Valvole Termoioniche

Questa generazione è caratterizzata da macchine enormi che occupavano intere stanze.

  • non esisteva il concetto di sistema operativo e le operazioni venivano eseguite in modo rudimentale
  • la risoluzione dei problemi richiedeva l’esame delle valvole termoioniche per individuare i guasti
  • la programmazione era in linguaggio macchina o attraverso il cablaggio di circuiti elettrici complessi (assenza di un linguaggio di programmazione)

Miglioramento nel 1950, nasce il primo supporto dati cartaceo (schede perforate) per la memorizzazione e il caricamento automatico dei programmi.

2° generazione (1955-1965) - transistor e sistemi batch

Intorno alla metà degli anni 50’, con l’introduzione dei transistor, vengono costruite macchine più economiche e veloci. Queste macchine, chiamate mainframe, erano costosi (milioni di dollari) e utilizzati da università e grandi gruppi industriali.

Introduzione del sistema batch

I programmi (o job) erano scritti in linguaggio come il FORTRAN, e venivano memorizzati su schede perforate e poi lette su un nastro magnetico attraverso un computer economico (es. IBM 1401). Poi una macchina più costosa faceva i calcoli con l’input dal letto dal nastro magnetico (es. IBM 7094).

In questo primo sistema batch :

  1. programmatori portano le schede al 1401
  2. 1401 legge un lotto di jobs nel nastro di input
  3. operatore porta il nastro di input al 7094
  4. 7094 esegue i calcoli
  5. operatore porta il nastro di output al 1401
  6. 1401 stampa l’output

La struttura di un input sarebbe :

dove sono presenti le seguenti “carte”:

  • $JOB : specifica il tempo massimo di esecuzione, numero utente e nome del programmatore
  • $FORTRAN : carica il compilatore FORTRAN dal nastro di sistema
  • Programma FORTRAN : codice sorgente da compilare
  • $LOAD : carica il programma compilato
  • $RUN : esegue il programma con i dati forniti subito dopo
  • Data
  • $END : termina il job

Queste schede di controllo sono i precursori dei moderni interpreti via shell o a riga di comando.

3° generazione (1965-1980) - circuiti integrati e multiprogrammazione

L’introduzione dei circuiti integrati (IC) segnò una svolta fondamentale. Nasce il IBM System/360 che utilizzava i circuiti integrati ed il sistema operativo OS/360 che permetteva la multiprogrammazione.

L’impatto del OS/360 fu il modello di “famiglia di computer”, ovvero una serie di computer compatibili con lo stesso insieme di istruzioni, adottato anche dai concorrenti.

Multiprogrammazione

La multiprogrammazione è una tecnica che consentiva alla CPU di non rimanere inattiva quando il job corrente era in attesa di un'operazione I/O, quindi passava ad eseguire un altro job.

La soluzione era quello di partizionare la memoria per ogni job :

quindi mentre un job aspettava I/O, un’altro job poteva utilizzare la CPU.

Spooling

Un’altra feature presente era lo spooling (simultaneous peripheral operation on line), che permetteva di caricare nuovi job senza interruzioni, appena un job terminava. Con lo spooling, il 1401 e il trasporto dei nastri diventò infatti inutile.

Timesharing

Un problema nei sistemi di 3° generazione era il tempo lungo tra l’inserimento di un job e il suo output. La soluzione fu il timesharing (alternativa alla multiprogrammazione) per una risposta rapida, dove ogni utente ha un terminale online e la CPU veniva assegnata a job utenti attivi. Il timesharing non diventò famoso, finché la protezione hardware diventò necessaria durante la 3° generazione.

Il MULTICS (Multiplexed Information and Computing Service) fu uno dei primi sistemi operativi ad l’idea del timesharing, infatti molte sue caratteristiche le ritroviamo oggi nei moderni OS.
Era purtroppo anche estremamente complesso.

Unix - Linux

Uno degli informatici dei Bell Labs che aveva lavorato al progetto MULTICS, Ken Thompson, trovò successivamente un piccolo minicomputer PDP-7 che nessuno usava e si mise a scrivere una versione semplificata e per un solo utente di MULTICS. Questo lavoro si sviluppò successivamente nel sistema operativo UNIX.

  • UNIX diventa popolare in ambito accademico e aziendale.
  • nascono diverse versioni UNIX : System V e BSD, che però troppe versioni portarono al caos

Diversi progetti di standardizzazione mirano a consolidare i vari aspetti di UNIX con lo scopo di ottenere un'interfaccia standard per programmare in UNIX :

  • POSIX (Portable OS) definisce delle system call che molti sistemi basati su UNIX supportano (fusione di System V e BSD)
  • VIBM, DEC e Hewlett-Packard creano OSF (Open Software Foundation)
  • X/OPEN definisce la Single UNIX specification

Sebbene ci siano molte versioni di UNIX, le compagnie più importanti forniscono una versione basata su UNIX System V Release 4 (SVR4) (es. Solaris 2.x è una implementazione di UNIX più diffusa e di più largo successo da un punto di vista commerciale).

Siccome questi sistemi erano grossi, complessi e costosi, Tanenbaum sviluppa MINIX (1987). MINIX era basato su UNIX e aveva 11800 righe di codice C, 800 di righe assembler e compatibile con gli standard POSIX.

MINIX 3 è stato adottato da Intel per il suo motore di gestione ed è ora presente in desktop, server e laptop.

Storia di Linux

Microsoft - Apple

  • Anni 70: Sviluppo dei circuiti LSI e nascita dei personal computer.

    • (Large Scale Integration, integrazione su larga scala), chip contenenti migliaia di transistor su un centimetro quadrato di silicio
  • Intel introduce l’8080, necessità di un sistema operativo.

    • Gary Kildall crea CP/M e fondò Digital Research.
    • Digital Research adatta CP/M per microcomputer (o PC anti-litteram)
  • Anni 80: IBM cerca sistema operativo per il PC, incontra Digital Research.

    • Kildall rifiuta incontro con IBM, opportunità mancata.
  • Microsoft acquisisce DOS da Seattle Computer Products.

    • Nasce MS-DOS e domina il mercato dei PC IBM.
  • Anni 80/90:

    • GUI introdotta da Doug Engelbart e adottata da Xerox PARC.
    • Steve Jobs ispirato da GUI, sviluppa Apple Macintosh.
    • Microsoft crea Windows come ambiente grafico su MS-DOS.
  • Evoluzioni:

    • Apple consolida il suo OS basato su UNIX ma architecture-specific
    • Windows NT influenzato da VAX VMS e sfida legale con DEC.
    • Windows 2000 e successori consolidano la posizione di Microsoft.
    • Vista e Windows 8 incontrano resistenza, successo con Windows 10.

Processi