Introduzione ai Sistemi Operativi: Kernel, Architetture e Confronto
Dal kernel alle interfacce: capiamo perché l'OS è l'intermediario indispensabile tra hardware e app, come gestisce CPU-memoria-file-periferiche e cosa cambia davvero tra Windows, Linux e iOS nella pratica quotidiana.
Accendi il PC del laboratorio, il telefono o la console e, prima ancora che tu apra una singola app, qualcosa ha già fatto un lavoro enorme: ha riconosciuto la scheda video, ha allocato la memoria, ha montato il disco, ha preparato lo schermo. Quel "qualcosa" è il sistema operativo — il software più importante di qualunque dispositivo, perché senza di esso l'hardware è solo silicio inerte.
1. Cos'è un sistema operativo
Il sistema operativo (OS) è il software di sistema che gestisce le risorse hardware (CPU, RAM, periferiche, dischi) e fornisce ai programmi e all'utente un'interfaccia comune, uniforme e astratta per utilizzarle, nascondendo la complessità dell'hardware.
Il sistema operativo si colloca esattamente nel mezzo: sotto di lui c'è l'hardware fisico, sopra di lui girano le applicazioni (browser, editor, videogiochi). Nessuna app parla direttamente con il disco o con la scheda di rete: passa sempre dall'OS, che traduce la richiesta in comandi eseguibili.
Nel nostro laboratorio con 24 PC, quando tutti salvate su rete un file chiamato relazione.docx, non scrivete direttamente sull'SSD del server. Lanciate salva() dalla vostra app, l'OS del vostro PC passa la richiesta via driver di rete, l'OS del server riceve, controlla permessi NTFS/ext4, alloca blocchi, scrive. È per questo che l'astrazione è fondamentale in Tecnologia.
Io ho pensato di fare così quando spiego l'OS agli studenti di terza: parto sempre dal perché non facciamo parlare le app direttamente con l'hardware. Io lo farei così anche all'interrogazione: spiega prima astrazione e condivisione controllata, poi fai l'esempio del laboratorio. Se dici solo "gestisce hardware" ti do 5. Se mi porti l'esempio concreto della stampa o del salvataggio, è 8 pieno.
2. Le funzionalità principali dei sistemi operativi
Ogni OS moderno — server, laptop o smartphone — svolge sostanzialmente le stesse sei funzioni di base. Cambiano i dettagli, non gli obiettivi.
Gestione processore
Scheduling: decide quale processo usa la CPU e per quanto, stato Pronto/Esecuzione/Attesa.
Gestione memoria
Alloca/libera RAM, protegge spazi, usa memoria virtuale e swap quando serve.
Gestione periferiche
Comunica con hardware diverso tramite driver: l'app non deve conoscere la stampante.
File system
Organizza file/cartelle, permessi, NTFS/ext4/APFS: stessa logica, formati diversi.
Interfaccia utente
CLI (potente/scriptabile) vs GUI (intuitiva). Oggi quasi sempre entrambe.
Sicurezza
Autentica utenti e applica permessi: chi può leggere/scrivere/eseguire cosa.
| Funzionalità | Cosa gestisce - in pratica |
|---|---|
| Gestione del processore | Decide quale processo usa la CPU e per quanto tempo (scheduling), gestisce stati del processo |
| Gestione della memoria | Alloca e libera RAM ai processi, protezione della memoria, swap/paging |
| Gestione delle periferiche | Comunica con stampanti, dischi, schede di rete tramite driver forniti dal produttore |
| Gestione del file system | Organizza dati su disco in file e cartelle, gestisce permessi e metadati |
| Interfaccia utente | Offre CLI o GUI per interagire con il sistema e le app |
| Sicurezza e controllo accessi | Autentica utenti e stabilisce chi può fare cosa sul sistema |
2.1 Gestione del processore e ciclo di vita
Un computer esegue decine di processi "contemporaneamente" anche con pochi core: simula parallelismo dividendo il tempo in time slice (multitasking a divisione di tempo). Ogni processo attraversa: Nuovo → Pronto → Esecuzione → Attesa → Terminato.
Confondere "Pronto" con "Attesa". Pronto = ha tutto tranne la CPU libera. Attesa = è bloccato per I/O (disco/rete) ed è per questo che l'OS può farne girare un altro nel frattempo. Se scrivi che in Attesa aspetta la CPU, è errore grave.
2.2 Memoria, driver, file system, UI, sicurezza
Memoria: protezione + memoria virtuale. RAM piena? Sposta su disco (swap) – illusione di più memoria, costo velocità.
Periferiche: driver = traduttore. App chiede "stampa", driver HP/Epson traduce.
File system: NTFS (Windows), ext4 (Linux), APFS (iOS) – struttura gerarchica + permessi.
UI: Bash/PowerShell vs finestre/icone.
Sicurezza: modello multiutente: studente non legge file compagno.
3. Architettura modulare e gerarchica
Apriamo il "cofano": troviamo il kernel al centro, circondato da livelli sempre più vicini all'utente. Come è organizzato cambia prestazioni, stabilità e sicurezza.
Il kernel è il nucleo dell'OS: gira con massimi privilegi (kernel mode) e ha accesso diretto all'hardware. Tutto il resto gira in user mode e deve chiedere al kernel tramite system call.
Un errore in user mode blocca solo quel programma. Un errore nel kernel blocca TUTTO: Blue Screen of Death su Windows, kernel panic su Linux/macOS/iOS. Per questo i driver – che spesso girano in kernel mode – sono codice delicatissimo.
3.1 Tre modelli architetturali
| Architettura | Come funziona | Vantaggi | Svantaggi |
|---|---|---|---|
| Monolitica | Tutto in un unico blocco in kernel mode (scheduler, memoria, driver, FS) | Molto veloce: comunicazione diretta | Bug in un driver = sistema giù |
| Monolitica modulare | Come monolitica ma moduli caricabili a runtime (.ko) | Velocità + flessibilità: carichi solo ciò che serve | Moduli comunque in kernel mode: rischio resta |
| Microkernel | Kernel fa solo scheduling e IPC; driver e FS in user mode come processi | Stabilissimo: crash driver non blocca tutto | Più lento: troppi scambi di messaggi |
Avete installato VirtualBox e improvvisamente il PC crasha? Quasi sempre è un driver virtuale in kernel mode. Io ho pensato di fare così in laboratorio: prima di installare driver nuovi, punto di ripristino. Io lo farei così anche a casa: mai driver beta sul PC dove studiate.
Io ho pensato di fare così per farvi ricordare i modelli: monolitico = un unico palazzo dove se crolla un pilastro crolla tutto; microkernel = tanti chioschi separati in piazza, se uno chiude gli altri lavorano. Io lo farei così al compito: disegnate voi due rettangoli con etichette kernel/user, ve lo ricordate per sempre e prendete punti schema.
3.2 Architettura a strati e soluzione ibrida
Ottica complementare: organizzare in layer gerarchici, dove ogni strato usa solo servizi di quello sotto. Isola i cambiamenti: se modifichi strato basso mantenendo interfaccia, quelli sopra continuano a funzionare. Molti OS reali sono ibridi: Windows NT è ibrido a strati; Linux pur monolitico è modulare con .ko caricati via modprobe.
4. Windows, Linux e iOS: tre approcci a confronto
I concetti – funzionalità, kernel, architettura – prendono forma concreta nei tre OS che usate ogni giorno.
4.1 Windows
Microsoft dal 1985, oggi DESKTOP più diffuso. Dal 1993 kernel Windows NT ibrido, progettato per portabilità e sicurezza multiutente – salto rispetto a MS-DOS/95/98. Sistema proprietario chiuso, licenza commerciale, FS NTFS, GUI + PowerShell.
4.2 Linux
Kernel creato 1991 da Linus Torvalds, licenza GPL: codice pubblico, modificabile. "Linux" è solo kernel: OS completo = distribuzioni (Ubuntu, Debian, Fedora, Kali) con ext4, gestori pacchetti. Domina server, cloud, supercomputer, embedded (Android usa kernel Linux).
4.3 iOS
Apple 2007 con primo iPhone. Kernel XNU (X is Not Unix) ibrido: Mach + BSD, stesso di macOS. Sistema proprietario sandboxato: app solo da App Store, ogni app in sandbox, FS APFS non liberamente accessibile. Sicurezza e uniformità vs personalizzazione.
4.4 Tabella comparativa definitiva
| Caratteristica | Windows | Linux | iOS |
|---|---|---|---|
| Anno di nascita | 1985 (NT dal 1993) | 1991 (kernel) | 2007 |
| Tipo di kernel | Ibrido (NT) | Monolitico modulare | Ibrido (XNU / Mach + BSD) |
| Licenza | Proprietaria | Open source (GPL) | Proprietaria |
| File system predefinito | NTFS | ext4 (varia per distro) | APFS |
| Interfaccia predefinita | GUI (+ PowerShell) | GUI o CLI, a scelta | GUI (touch) |
| Installazione app | Da installer o Microsoft Store | Gestori pacchetti (apt, dnf...) | Solo App Store |
| Ambito d'uso tipico | Desktop office, gaming, aziende | Server, cloud, embedded, sviluppo | Smartphone e tablet Apple |
Io ho pensato di fare così quando vi chiedo di confrontare OS alla lavagna: non fate elenco sterile, fate matrice contesto-soluzione. Io lo farei così: "Devo fare server web low-cost 24/7? Linux: GPL=0 costi licenza, stabile, CLI. Devo giocare a AAA? Windows: DirectX + driver. Devo garantire sicurezza media a utenti non tecnici? iOS sandbox." Se rispondete "dipende" senza motivare tecnologia, è 4. Se motivate con kernel/licenza/FS, è 9.
Scenario A: startup con 10 server Node.js –> Linux Ubuntu Server, ext4, apt, SSH. Scenario B: ufficio commercialista con gestionali .exe –> Windows 11 Pro, NTFS, Active Directory. Scenario C: progetto app per controllo accessi in museo con iPad fissi –> iOS con MDM, APFS crittografato, sandbox. Stessa base teorica, tre scelte tecnologiche opposte ma corrette.
Non esiste OS "migliore in assoluto". La scelta è contestuale. Un server web ad alte prestazioni sceglierà quasi sempre Linux per costo, stabilità e controllo; azienda userà Windows per compatibilità; mobile chiuso ma sicuro = iOS vs apertura Android (che usa kernel Linux al suo interno!).