Riassunto:
Per molto tempo esiste una spiegazione apparentemente ragionevole del motivo per cui Windows a 32 bit può utilizzare solo 4 GB di memoria: perché gli indirizzi a 32 bit possono rappresentare solo 2 ^ 32 indirizzi, ovvero un massimo di 4 GB di memoria. Ma Raymond Chen, ingegnere senior di Microsoft, ha recentemente rispiegato questa questione storica e ha sottolineato che questa affermazione è incompleta. In effetti, i processori x86 a 32 bit e Windows hanno da tempo la possibilità di accedere a più di 4 GB di memoria fisica. Il motivo principale per cui Microsoft ha finalmente scelto di limitare la normale versione consumer di Windows a 4 GB è stato il grave rischio di compatibilità nell’enorme e complesso ecosistema di driver hardware dell’epoca.

Dal punto di vista della pura capacità hardware, i processori a 32 bit non hanno accesso solo a 4 GB di memoria fisica. Intel ha introdotto la tecnologia Physical Address Extension, nota anche come PAE (Physical Address Extension), già nell'era del Pentium Pro, consentendo ai processori x86 a 32 bit di utilizzare indirizzi fisici a 36 bit. In questo modo la memoria fisica indirizzabile teorica viene ampliata da 4GB a 64GB.
PAE non modifica lo spazio degli indirizzi virtuali dell'applicazione stessa a 32 bit. Per un normale programma a 32 bit, vede ancora solo uno spazio di indirizzi virtuali da 4 GB e il sistema operativo deve essere responsabile della gestione e della mappatura tra questo spazio di indirizzi virtuali limitato e la memoria fisica più grande. In altre parole, PAE risolve il problema di come il sistema operativo gestisce più di 4 GB di memoria fisica, anziché consentire a un singolo programma a 32 bit di ottenere improvvisamente più di 4 GB di spazio di indirizzi contigui.
Microsoft sfrutta questa funzionalità già da molto tempo. Alcune versioni server di Windows Server 2003 possono utilizzare molto più di 4 GB di memoria tramite PAE, con l'edizione Enterprise che supporta fino a 64 GB e la versione Datacenter che supporta addirittura fino a 128 GB. Ciò dimostra che "Windows a 32 bit può tecnicamente utilizzare solo 4 GB" non è accurato.
Il vero problema risiede nell'autista.
Quando PAE è abilitato, il sistema può fornire indirizzi fisici oltre l'intervallo di 32 bit al driver hardware. Per i driver scritti secondo il tradizionale ambiente a 32 bit, ciò comporterà un problema molto pericoloso: alcuni driver sono convinti che l'indirizzo fisico non supererà mai i 32 bit, quindi troncheranno direttamente i bit più alti dell'indirizzo.

Ad esempio, Windows potrebbe dire al driver che una determinata porzione di dati deve essere scritta in una posizione di memoria fisica oltre l'intervallo di indirizzi di 4 GB, ma se il driver scarta erroneamente i bit più alti, potrebbe finire per scrivere i dati in un'area di memoria completamente diversa. Ciò potrebbe non solo causare un'esecuzione anomala del programma, ma potrebbe anche sovrascrivere altri dati, causando eventualmente danni alla memoria, arresto anomalo del sistema o addirittura mancato avvio.
La precedente documentazione tecnica di Microsoft sottolineava inoltre che dopo aver abilitato PAE, il driver di solito deve apportare alcune modifiche apparentemente piccole ma molto critiche. Il problema era che gli sviluppatori di driver dovevano assicurarsi che il loro codice non presupponesse che gli indirizzi fisici fossero nello stesso intervallo degli indirizzi virtuali a 32 bit, come avveniva all'epoca per un gran numero di driver hardware.
Ciò è particolarmente pericoloso sui normali computer consumer. L'ambiente hardware del server è solitamente molto fisso. Gli amministratori di sistema sceglieranno hardware server collaudato e proveranno a utilizzare i driver standard forniti con Windows. I normali PC sono completamente diversi. Gli utenti possono installare una varietà di stampanti, scanner, schede audio, schede TV, fotocamere, schede di rete e altri dispositivi di espansione. Dietro ciascun dispositivo possono esserci driver scritti da produttori diversi e generazioni diverse.
Microsoft non è stata in grado di garantire che tutti questi grandi numeri di driver di terze parti potessero gestire correttamente indirizzi fisici superiori a 4 GB.
Ciò che è ancora più problematico è che alcuni problemi non vengono rilevati in un normale ambiente di memoria inferiore a 4 GB. Un driver potrebbe funzionare bene per anni, finché un giorno il sistema gli consegna 4 GB di indirizzi fisici e all'improvviso compaiono bug nascosti nel codice. Se il driver tronca questo indirizzo, il risultato potrebbe essere che i dati vengano scritti nella posizione di memoria sbagliata, causando arresti anomali casuali e corruzione dei dati estremamente difficili da risolvere.

Pertanto, Microsoft ha finalmente scelto una soluzione che sembrava molto conservativa ma che era più sicura per i consumatori comuni: limitare attivamente lo spazio degli indirizzi fisici nella versione client Windows a 32 bit e impedire al sistema di utilizzare più di 4 GB di memoria fisica.
Windows XP e Windows Server 2003 SP1 sono nodi importanti di questa politica. Microsoft ha modificato il livello di astrazione hardware di entrambi per limitare lo spazio degli indirizzi fisici a 4 GB nella corrispondente versione client. Lo scopo non è perché il processore non possa accedere a indirizzi più alti, ma per impedire a PAE di esporre driver di terze parti incompatibili.
Ciò spiega anche perché Windows Server può utilizzare più di 4 GB di memoria, ma Windows per gli utenti ordinari non può.
Gli amministratori dei server di solito non collegano un vecchio scanner USB acquistato per più di dieci dollari a un server di produzione, per non parlare di installare un driver di terze parti risalente a più di dieci anni fa per poter utilizzare un normale dispositivo elettronico di consumo. Gli ambienti server sono in genere altamente selezionati, l'hardware e i driver utilizzati sono più fissi e Microsoft è in grado di testare completamente i driver forniti con il sistema.
Raymond Chen ha spiegato questa differenza in modo molto semplice: gli amministratori dei server non si limitano a installare un driver per un dispositivo economico come i normali consumatori, e i driver utilizzati sui server sono generalmente stati verificati per ambienti con indirizzi fisici elevati.

Gli utenti comuni sono esattamente l'opposto. I computer dei consumatori possono avere driver installati per decine di dispositivi diversi, alcuni dei quali provengono da hardware che ha più di dieci anni. Per Microsoft, il rischio di rendere tutti questi driver compatibili con PAE è di gran lunga maggiore della penalità derivante dalla limitazione della memoria.
Infatti, anche se in Windows a 32 bit sono installati 4 GB di memoria, gli utenti potrebbero non essere in grado di visualizzare tutti i 4 GB. Il motivo è che lo spazio degli indirizzi fisici inferiore a 4 GB non deve essere utilizzato solo per la memoria di sistema, ma deve anche mappare la memoria del dispositivo di schede grafiche, schede di rete, schede audio e altro hardware. Se l'hardware occupa parte dello spazio degli indirizzi, parte della RAM deve essere allocata oltre il limite degli indirizzi di 4 GB.
Di conseguenza, su molti computer Windows a 32 bit con 4 GB di RAM installati, il sistema potrebbe finire per utilizzare solo circa 3 GB o meno di RAM. Questo è anche uno dei motivi fondamentali per cui un gran numero di computer Windows XP presentano il fenomeno dei "4 GB installati ma il sistema può utilizzare solo circa 3 GB".
Microsoft ha inoltre negato espressamente una teoria del complotto di lunga data secondo cui Microsoft avrebbe deliberatamente limitato la memoria in Windows a 32 bit per costringere i consumatori ad acquistare costosi Windows Server. Sebbene Windows Server possa effettivamente utilizzare più memoria, Microsoft ritiene che i mercati e gli ambienti hardware per i due siano completamente diversi e il limite di 4 GB sulla versione client serve principalmente a evitare problemi di compatibilità dei driver.
Inoltre, se Microsoft avesse davvero voluto che gli utenti comuni acquistassero Windows Server per risolvere i limiti di memoria, il prezzo di questa soluzione sarebbe ovviamente ridicolo. La versione più bassa di Windows Server 2003 che poteva supportare più di 4 GB di memoria era l'Enterprise Edition, al prezzo di 3.999 dollari, che non aveva alcun significato pratico per i consumatori comuni.

Con la progressiva diffusione dei processori e dei sistemi operativi a 64 bit, questo problema alla fine ha perso il suo significato pratico. Windows a 64 bit ha molto più di 4 GB di spazio di indirizzi, consentendogli di utilizzare grandi quantità di memoria fisica mantenendo la compatibilità. Man mano che i computer entrano gradualmente nell'era della memoria multi-GB o addirittura di decine o centinaia di GB, l'architettura a 32 bit alla fine si ritira dal mercato mainstream.
Microsoft smetterà gradualmente di promuovere nuovi sistemi che utilizzano processori a 32 bit a partire dal 2020 e alla fine cancellerà completamente la versione a 32 bit nell'era di Windows 11. L'attuale documento di supporto ufficiale di Microsoft afferma inoltre chiaramente che Windows 11 e versioni successive forniscono solo versioni a 64 bit.
Questa storia riflette anche un problema interessante: quanto più abbondanti sono le risorse hardware, tanto più facile è che il software diventi "obeso". Se i PC fossero sempre limitati da 4 GB di memoria, gli sviluppatori di software potrebbero dover prestare maggiore attenzione all’utilizzo della memoria; e man mano che la memoria del computer aumenta rapidamente da 4 GB a 8 GB, 16 GB e persino 64 GB, molte applicazioni si abituano gradualmente a consumare più risorse.
Al giorno d'oggi non è raro che alcune applicazioni occupino facilmente centinaia di MB o addirittura GB di memoria. Microsoft ora sta lavorando duramente per far funzionare bene Windows 11 su computer con 8 GB di memoria, e l'enorme richiesta di risorse di memoria da parte delle applicazioni di intelligenza artificiale ha reso ancora una volta l'intero settore consapevole dell'importanza dell'efficienza della memoria.
Pertanto, anche se il limite di 4 GB di Windows a 32 bit è finalmente diventato storia, il motivo non è così semplice come "i processori a 32 bit possono gestire solo 4 GB di memoria". La vera risposta è che Microsoft si trovava di fronte a un enorme ecosistema costituito da migliaia di driver hardware di terze parti di varia qualità. È tecnicamente possibile superare i 4 GB, ma se la svolta provoca il crash casuale di un gran numero di computer consumer, questa capacità potrebbe diventare un peso per il sistema operativo client.
Da questo punto di vista, il limite di 4 GB di Windows non è semplicemente un collo di bottiglia tecnico, ma una scelta ingegneristica effettuata in modo proattivo per garantire stabilità e compatibilità. Windows a 32 bit è riuscito a superare i 4 GB per molto tempo. Tuttavia, di fronte all'incontrollabile ecosistema dei driver dell'epoca, Microsoft scelse infine di sacrificare alcune funzionalità hardware per consentire agli utenti comuni di utilizzare i computer in modo più stabile.
Commenti