Ciao, e benvenuto nella quinta puntata della settantesima stagione. Abbiamo visto l'illusione del tempo: tanti processi che si dividono un processo a turni. Oggi tocca all'illusione dello spazio, ed è forse la più audace di tutte. Ogni programma che scrivi crede di avere a disposizione un'immensa memoria, tutta sua, ordinata e continua, che parte da zero. È una bellissima bugia. La memoria vera è poca, frammentata, e condivisa da tutti. Oggi vediamo come il sistema operativo racconta questa bugia, e cosa succede quando la bugia si scopre.
Partiamo dall'illusione, perché è davvero elegante. Quando il tuo programma chiede la memoria e usa un indirizzo, diciamo la casella numero mille, non sta parlando della casella numero mille vera, quella fisica dentro il chip di memoria. Sta parlando di un indirizzo finto, tutto suo. Ogni processo ha il suo spazio di indirizzi personale, che parte da zero e sembra sconfinato. Il numero mille del tuo browser e il numero mille del tuo editor sono due posti diversi nella memoria reale, e nessuno dei due lo sa. Ognuno vive nella sua mappa privata, convinto che sia l'unica.
Vediamo chi tiene in piedi questa finzione, perché non può farlo il software da solo, sarebbe troppo lento. C'è un pezzo di hardware dedicato, che sta tra il processore e la memoria, e fa una cosa sola ma la fa a ogni singolo accesso: traduce. Prende l'indirizzo finto che il programma usa, e lo converte al volo nell'indirizzo vero dove quel dato si trova davvero. È un traduttore instancabile, milioni di volte al secondo. Il sistema operativo prepara le tabelle di traduzione, una per ogni processo, e l'hardware le consulta. Cambi processo, cambi mappa: ecco perché ognuno vive nel suo mondo senza vedere quello degli altri.
Nota che questa traduzione non è solo una comodità: è anche il muro dell'isolamento di cui parlavamo. Se il tuo programma prova a leggere un indirizzo che non gli appartiene, la traduzione fallisce, e il sistema operativo interviene bloccandolo. Non c'è modo, per un processo, di andare a curiosare nella memoria di un altro, perché semplicemente non ha una mappa che ci arrivi. L'illusione dello spazio privato e la sicurezza sono la stessa identica cosa, costruite con lo stesso meccanismo. Una bella economia: una sola idea che risolve due problemi.
E qui arriva il colpo di teatro, la parte più spudorata della bugia. Il sistema operativo può promettere a un programma più memoria di quanta ne esista fisicamente. Come? Tenendo in memoria vera solo i pezzi che servono adesso, e parcheggiando il resto sul disco, che è enorme ma lento. Finché il programma usa i pezzi che sono in memoria, tutto vola. Ma quando chiede un pezzo parcheggiato sul disco, si ferma tutto: il sistema operativo corre a recuperarlo, rimetterlo in memoria, magari spostandone via un altro, e solo allora il programma riparte. Questo inciampo si chiama, in gergo, un difetto di pagina, e ogni volta costa un'eternità in termini di computer.
E adesso la parte onesta della puntata, quella che devi conoscere davvero. Questa illusione è meravigliosa finché regge, ma ha un punto di rottura, e quando lo superi il crollo è brutale. Immagina un programma che ha bisogno di molta più memoria di quella disponibile. Il sistema operativo fa avanti e indietro col disco senza sosta: sposta un pezzo per far posto a un altro, ma subito serve quello appena tolto, e lo rimette togliendone un altro ancora. La macchina passa tutto il tempo a spostare memoria dentro e fuori dal disco, e quasi niente a fare lavoro vero. Da fuori sembra congelata: il mouse si muove a scatti, tutto è melassa. Non è rotto: è schiacciato sotto un'illusione che non riesce più a mantenere. È la lezione dura di oggi: le astrazioni comode hanno un costo nascosto, e quando le forzi oltre il limite non degradano dolcemente, ti crollano addosso.
Voglio lasciarti con il modo giusto di pensarci, perché ti servirà davvero. La memoria virtuale è una bugia utile, non una bugia gratuita. Ti regala programmi che non devono preoccuparsi di dove finiscono in memoria, isolamento perfetto, e la comodità di usarne più di quella fisica. Ma te la fa pagare in due momenti: ogni traduzione costa un pochino, e ogni volta che vai a cercare un pezzo parcheggiato sul disco costa moltissimo. Chi conosce la bugia resta nel territorio dove conviene, e riconosce il rumore che fa il sistema quando sta per superare il limite. Chi la ignora, un giorno vede il computer congelarsi e non capisce perché.
Per oggi ci fermiamo qui. Abbiamo smontato l'illusione dello spazio: ogni processo crede di avere una memoria immensa, ordinata e tutta sua, che parte da zero, mentre gli indirizzi che usa sono finti. Un pezzo di hardware traduce ogni accesso dall'indirizzo finto a quello vero, milioni di volte al secondo, e quella stessa traduzione è il muro che tiene isolati i processi. Il sistema operativo può perfino promettere più memoria di quella esistente, parcheggiando sul disco i pezzi che non servono, al prezzo di un difetto di pagina quando li rivuole. Ma la bugia ha un punto di rottura: forzata oltre il limite, la macchina passa il tempo a spostare memoria e si congela. Le astrazioni comode costano, e non crollano con dolcezza. Nella prossima puntata: mettere ordine nel disco. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.