Il vincolo è una specifica
Sulla copertina di 512 KILOBYTE ci sono 512 celle di memoria e ne restano libere diciotto. Non è una metafora: è un readout.
3 min di lettura Progetto: 512 KILOBYTE
In alto sulla copertina di 512 KILOBYTE c’è una riga in monospaziato:
-- pre-httpd free=18432 largest=31744
-> httpd started
Diciottomilaquattrocentotrentadue byte. Diciotto kilobyte esatti, contati col righello giusto, quello da 1024. Sotto, una griglia: cinquecentododici celle, una per kilobyte, e diciotto accese in oro. La didascalia lo dice senza giri di parole: 512 celle, un kilobyte ciascuna. In oro, i 18 che restano liberi.
E subito dopo, il server HTTP parte.
Quello che quella riga sta dicendo
Un readout del genere non è grafica. È il momento esatto in cui qualcuno ha guardato quanta memoria restava e ha deciso di avviare comunque un altro servizio. Il tre e mezzo per cento del totale. Con quello bisogna far stare lo stack di rete, i buffer delle connessioni, e qualunque cosa il servizio allochi mentre serve una pagina.
Chi non ha mai lavorato sotto quel tetto legge “diciotto kilobyte liberi” come un’emergenza. Chi ci lavora lo legge come un budget.
Ed è la differenza che fa il libro: il sottotitolo dice storia e regole. Regole, non aneddoti. Un limite duro non è un contrattempo che capita durante il progetto. È un dato in ingresso, esattamente come il formato dello schermo o il set di istruzioni della CPU. Cambia cosa è possibile, e quindi cambia cosa va progettato, non quanto in fretta va scritto lo stesso codice di sempre.
Non è archeologia
Verrebbe da leggere mezzo megabyte come un pezzo di storia degli anni Ottanta. Non lo è.
NucleoOS gira su un M5Stack Cardputer: un ESP32-S3, un microcontrollore che sta in una mano. Sopra ci stanno un firmware nativo, una shell che si comporta come un desktop, e ANIMA, un assistente che risponde senza rete, perché il modello gira lì dentro. Ogni singola di quelle cose è una trattativa con la memoria.
NucleoOS-P4 cambia il chip e non cambia il problema: più potenza, uno schermo da sette pollici, e subito applicazioni compilate in WebAssembly per poterle aggiungere senza ricostruire il firmware. Quella scelta lì non nasce dall’eleganza. Nasce dal fatto che ricostruire e riflashare il firmware per ogni app costa, e la memoria per tenere due copie di tutto non c’è.
Perfino questo sito è lo stesso discorso, un piano più in su. Sta su una macchina che ospita anche il lobby multiplayer di ExaWar, e quella macchina ha mezzo giga di RAM: un’operazione fatta con leggerezza non rallenta il sito, fa cadere le partite in corso. Quindi il sito non ha un motore che gira. Le pagine vengono costruite altrove e il server si limita a leggere file da disco, che è l’unica cosa che può permettersi di fare.
Le regole si pagano
La parte che la copertina non può mettere in una riga è il prezzo.
Quando togli memoria, non togli funzioni in modo indolore. Togli generalizzazioni. Togli il buffer che copriva il caso limite, la struttura che era comoda ma larga, il livello di astrazione che rendeva il codice leggibile a chi arriva dopo. Ogni kilobyte recuperato è un pezzo di flessibilità convertito in spazio, e quella conversione non va all’indietro.
Diciotto celle in oro su cinquecentododici sono una bella immagine. Sono anche il margine dentro cui deve restare tutto quello che non hai previsto.
512 KILOBYTE. Storia e regole di un sistema operativo impossibile, di Nicola Sabaini. In italiano. Su Amazon.it.