Il sistema operativo è un programma che si occupa di gestire gli altri programmi creando un'interfaccia tra hardware e software.
- processore
- memoria
- meccanismi che collegano processore e memoria (BUS)
- sistema operativo
- interfaccia binaria per le applicazioni
- creazione dei programmi
- esecuzione dei programmi
- accesso ai dispositivi IO
- accesso controllato ai file
- accesso al sistema
- rilevazione degli errori e risposta
- contabilità
- ISA instruction set architecture
- ABI Application Binary Interface
- API Application Programming Interface
Il sistema operativo nel tempo si evolve venendo aggiornato per supportare nuovi tipi di hardware, nuovi servizi e per correggere degli errori.
I primi calcolatori utilizzavano delle valvole per la gestione delle informazioni, non avevano un sistema operativo e il controllo era tramite console. Avevano enormi problemi di schedulazione in quanto ogni cosa doveva essere gestita dal programmatore (non c'era un sistema operativo) e occorreva un lungo tempo di preparazione
Iniziano ad essere utilizzati i transistor e il sistema era gestito da un operatore. I lavori erano organizzati in lotti inseriti da un dispositivo di ingresso (es: schede forate) che vengono caricate da un monitor che ordina il caricamento dei programmi e delega l'esecuzione a un'altro programma. Una volta terminata l'esecuzione il controllo della macchina torna al monitor.
Ci sono nuove funzioni hardware, la memoria non è più solo composta da una serie di istruzioni da eseguire in sequenza, ma ci sono nuove funzioni che generano notevoli cambiamenti all'interno del processore, come l'interruzione dell'esecuzione, il salto di un'istruzione ecc...
L'hardware è composto da circuiti integrati fatti di silicio che connette insieme più dispositivi, rendendo possibile la multiprogrammazione.
Il dispositivo doveva gestire più lavori interattivi, con processore condiviso tra più utenti che accedono attraverso terminali e l'esecuzione del programma di ogni utente è alternata uno alla volta per un breve lasso di tempo.
La multiprogrammazione ottimizza l'utilizzo del processore, a differenza del time sharing il cui obiettivo è minimizzare i tempi di risposta.
I computer vengono integrati su larga scala e viene costruita un'interfaccia amichevole per l'uso da parte di utenti non esperti.
Gli smartphone, dispositivi con autonomia limitata che devono quindi avere una gestione della batteria appurata.