Cos'è un sistema operativo?
Un sistema operativo (SO) è il software che gestisce l'hardware di un computer ed esegue tutti gli altri programmi, dividendo tra loro processore, memoria e spazio di archiviazione e fornendo file, rete, input e output. Windows, macOS, Linux, Android e iOS sono sistemi operativi.
Aggiornato il 24 settembre 2026
Premi un tasto mentre è aperto un editor di testo. La tastiera invia un segnale elettrico, e un driver dentro il sistema operativo lo legge. Il sistema operativo capisce quale finestra è in primo piano, consegna il tasto a quel programma, e l'editor disegna la lettera. L'editor non parla mai con la tastiera. Salvare il file, riprodurre un suono e caricare una pagina web funzionano allo stesso modo: i programmi chiedono, e il sistema operativo fa il lavoro con l'hardware.
Cosa fa un sistema operativo
Un sistema operativo ha una manciata di compiti, e ogni programma del computer dipende da tutti:
- Eseguire i programmi (gestione dei processi). Un portatile con 8 core di CPU può avere qualche centinaio di programmi e servizi in background in esecuzione. Lo scheduler del SO dà a ciascuno brevi turni su un core, cambiando molte volte al secondo, così sembrano girare tutti insieme.
- Gestire la memoria. Ogni programma riceve il proprio spazio di indirizzi privato. Quando un programma legge memoria che non gli appartiene, il SO lo ferma; in C questo è il famoso segmentation fault.
- Salvare i file. Il SO trasforma un disco, che memorizza solo blocchi numerati di byte, in cartelle e file con un nome, un caso da manuale di astrazione. Il formato si chiama file system: NTFS su Windows, APFS su macOS, ext4 sulla maggior parte dei sistemi Linux.
- Parlare con l'hardware. I driver fanno da traduttori tra il SO e ogni dispositivo: scheda grafica, chip Wi-Fi, stampante, webcam.
- Rete. Il SO implementa TCP/IP, così un programma può aprire una connessione verso un server senza sapere niente della scheda di rete.
- Sicurezza e utenti. Account, password e permessi dei file decidono chi può leggere o modificare cosa.
- L'interfaccia utente. Il desktop, le finestre e la barra delle applicazioni, oppure una shell testuale come Bash o PowerShell.
Il kernel e le chiamate di sistema
Il cuore di un sistema operativo è il kernel. Gira con il pieno controllo dell'hardware, mentre i programmi normali girano in una modalità limitata e non possono toccare direttamente i dispositivi. Quando un programma ha bisogno di qualcosa, fa una chiamata di sistema (system call): una richiesta al kernel come "apri questo file", "invia questi byte" o "avvia un nuovo processo".
Di solito non vedi le chiamate di sistema perché il tuo linguaggio le nasconde. open() e print() di Python finiscono in chiamate al kernel. Il modulo os ti permette di farle quasi direttamente:
L'ID del processo e il numero di core dipendono dalla macchina; l'ultima riga stampa sempre File size: 23 bytes. os.open restituisce un descrittore di file, un piccolo numero che il kernel usa per tenere traccia del file aperto, e os.write gli invia 23 byte. In C le stesse richieste sono quasi identiche, perché queste funzioni sono involucri sottili sopra le chiamate di sistema:
int fd = open("note.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
write(fd, "saved by a system call\n", 23);
close(fd);
Su Linux puoi osservare ogni chiamata di sistema che un programma fa con strace python3 script.py.
Esempi e tipi di sistemi operativi
| Sistema operativo | Dove gira | Kernel |
|---|---|---|
| Windows 11 | La maggior parte dei PC fissi e portatili | Windows NT |
| macOS | Computer Mac di Apple | XNU (Darwin) |
| Linux (Ubuntu, Fedora, Debian e altri) | La maggior parte dei server e delle macchine cloud, alcuni desktop | Linux |
| Android | La maggior parte degli smartphone nel mondo | Linux |
| iOS | iPhone | XNU (Darwin) |
| ChromeOS | Chromebook | Linux |
Oltre a questi sistemi di uso generale esistono i sistemi operativi real-time come FreeRTOS e Zephyr, che girano sui microcontrollori di elettrodomestici, sensori e macchine industriali e garantiscono una risposta entro un tempo fisso. Molti piccoli dispositivi usano sistemi embedded costruiti per un unico scopo.
La tabella mostra che uno stesso kernel può alimentare prodotti molto diversi. Android e ChromeOS usano entrambi il kernel Linux con il proprio software sopra, e iOS condivide il kernel con macOS.
Perché il sistema operativo conta quando programmi
Un programma compilato è costruito per un solo sistema operativo. Un .exe di Windows non gira in modo nativo su Linux, nemmeno sullo stesso computer, perché il formato del file e le chiamate di sistema sono diversi. Ecco perché le pagine di download offrono versioni separate, e perché esistono ambienti di runtime come la JVM, Node.js e CPython: vengono costruiti una volta per ogni sistema operativo così il tuo codice non deve esserlo. Vedi ambiente di runtime.
Qualche piccola differenza trapela comunque. Esegui questo codice e confrontalo con quello di un amico su un altro sistema:
Su Linux e macOS stampa:
Path separator: '/'
Line ending: '\n'
projects/notes/todo.txt
Su Windows il separatore è '\\' (una sola barra rovesciata), il fine riga è '\r\n', e il percorso diventa projects\notes\todo.txt. Usare os.path.join (o pathlib) invece di scrivere / a mano è ciò che fa funzionare uno script su tutti e tre.
Falsi miti comuni
- "Linux è un sistema operativo." A rigore, Linux è un kernel. Una distribuzione Linux come Ubuntu aggiunge la shell, gli strumenti di sistema, un gestore di pacchetti e di solito un desktop per formare un sistema operativo completo. Nel linguaggio di tutti i giorni si chiamano entrambi Linux.
- "Il BIOS fa parte del sistema operativo." Il firmware BIOS o UEFI sta sulla scheda madre. Controlla l'hardware e poi carica il sistema operativo dal disco, e a quel punto il suo compito principale è finito.
- "Il desktop è il sistema operativo." Il desktop è un programma che gira sopra il kernel. I server di solito funzionano senza alcun desktop, controllati solo tramite una shell testuale.
- "Le app parlano con l'hardware." I programmi normali non hanno il permesso di farlo. Ogni lettura di file, pacchetto di rete e pixel sullo schermo passa per il sistema operativo, ed è per questo che un'app che va in crash di solito non si porta dietro tutto il computer.
Cosa leggere dopo
Il sistema operativo è il livello più basso; l'ambiente di runtime sta tra esso e il tuo codice. La protezione della memoria è ciò che produce un segmentation fault, e la pagina sul byte spiega l'unità che il SO usa per file e memoria. Per controllare un sistema operativo dalla sua shell testuale, prova il corso sul terminale.
Domande frequenti
Un computer può funzionare senza sistema operativo?
Quali sono i 5 sistemi operativi più diffusi?
Quali sono i principali tipi di sistemi operativi?
Come faccio a sapere quale sistema operativo ho?
winver. Su un Mac, apri il menu Apple e scegli Informazioni su questo Mac. Su Linux, esegui cat /etc/os-release in un terminale, e uname -r mostra la versione del kernel.