# data[].attributes.body
La storia dei sistemi operativi può essere suddivisa in quattro generazioni:

1. valvole e spinotti, assenza di sistema operativo;

2.  transistor e sistemi batch;

3.  circuiti integrati e multiprogrammazione;

4. sviluppo delle reti e avvento del personal computer.

# data[].attributes.body
In questo periodo abbiamo i primi degli elaboratori elettronici, privi di sistema operativo. Erano ammassi di valvole termoioniche, occupavano intere stanze, erano lentissimi e molto costosi, tanto che se li potevano permettere solo Università, centri di calcolo molto grandi o sovrani particolarmente abbienti. Oltre ad essere costosi, erano anche inaffidabili, dato che le valvole di cui erano composti si rompevano spesso. In questo periodo non esisteva ancora un sistema operativo, infattiil programma da eseguire, veniva inserito tramite un lettore di schede perforate, e solo dopo molto tempo veniva dato il risultato. Il programma doveva contenere inoltre tutte le istruzioni necessarie, ad esempio le operazioni di input/output.
Il primo supercomputer di questo periodo fu l'ENIAC.

# data[].attributes.body
A metà degli anni '50 il transistor, andò a sostituire le valvole. Il transistor è un disposotivo che permette di controllare la corrente in un circuito.
In questi anni si introdusse la programmazione batch, un primo rudimentale sistema operativo. L'idea era quella di usare delle schede di controllo, che permettevano di gestire i programmi che andavano eseguiti sul calcolatore riducendo così i tempi di calcolo. Inoltre, per ridurre i tempi di installazione, i programmi simili venivano raggruppati tra loro.

Il maggiore problema di questi computer era la lentezza nella lettura delle schede perforate: si provo così a ridurre i tempi utilizzando dei nastri magnetici, che venivano letti da un computer esterno.

# data[].attributes.body
Viene introdotta la multiprogrammazione: quando un processo è in attesa perché sta facendo un'operazione di Input o Output la CPU viene assegnata temporaneamente ad un altro processo in modo da evitare i tempi morti.

Inoltre, con l'introduzione degli hard disk, nacque anche una tecnica chiamata spooling. Un'evoluzione della tecnica che consisteva nel caricare i programmi dalle schede perforate al nastro magnetico. Nel caso dello spooling, mentre si ha un processo in esecuzione, il computer legge il programma successivo da un lettore di schede e lo carica in una specifica area del disco.

Negli anni '70 si crearono invece i primi sistemi time-sharing, nati per poter avere molti utenti che lavoravano contemporaneamente sullo stesso computer. Uno dei primi sistemi time-sharing fu Multics, dal quale derivò poi Unix.

# data[].attributes.body
Negli anni '80 nacquero i primi personal computer. Uno tra i più diffusi fu il PC IBM, con il quale venne introdotto anche il sistema operativo MS-DOS. Sempre in quegli anni la Apple introdusse la prima interfaccia grafica, GUI. L'idea fu subito utilizzata anche dalla Microsoft con l'introduzione del sistema operativo Windows.

Negli ultimi anni sono stati sviluppati anche sistemi operativi di rete e sistemi operativi distribuiti. In entrambi si ha una distribuzione delle elaborazioni su più processori ma, mentre nei primi l'utente è consapevole dell'esistenza di più nodi/calcolatori, nei secondi l'utente può lavorare come se il computer avesse un unico processore, anche se nella realtà si tratta di un sistema multiprocessore.