Windows 11 nasconde ancora oggi il gestore della memoria di Windows 95, Microsoft conserva il codice vecchio di decenni

📅 2026-10-19

Riassunto:

Windows 11 dispone già di un'interfaccia utente moderna, di meccanismi di sicurezza avanzati e di capacità di intelligenza artificiale sempre maggiori, ma all'interno del sistema operativo Microsoft conserva ancora parte del codice dell'era Windows 95. Sorprendentemente, questi codici non vengono semplicemente lasciati nel sistema come file legacy storici, ma possono ancora essere eseguiti in determinate condizioni, fornendo supporto di compatibilità per alcune applicazioni che si basano sul vecchio comportamento di gestione della memoria.

In Windows 11 26H2, Microsoft mantiene ancora un meccanismo di ripristino della compatibilità delle applicazioni chiamato EmulateHeap. Consente ad alcuni vecchi programmi di utilizzare codice modellato sul gestore della memoria di Windows 95 per evitare che questi programmi si blocchino a causa dei cambiamenti nel modo in cui Windows moderno gestisce la memoria.

La storia di questo meccanismo risale agli anni '90. A quel tempo, è stato riscontrato un errore di programma in un gioco classico chiamato "SimCity". Invece di chiedere semplicemente agli sviluppatori di riparare il gioco, Microsoft ha modificato direttamente il comportamento di Windows 95 in modo che il gioco potesse continuare a funzionare. Da allora, Microsoft ha utilizzato un meccanismo di compatibilità più sistematico per aiutare altri vecchi software con problemi simili a continuare a funzionare nelle nuove versioni di Windows.

Questa storia rivela anche un importante principio di progettazione di Windows da molto tempo: per un sistema operativo con un enorme ecosistema software, mantenere i vecchi programmi in esecuzione normalmente è talvolta più importante che ripulire completamente il codice storico.

Un errore di memoria in "SimCity" richiede a Microsoft di modificare il sistema operativo

Per capire perché esiste EmulateHeap, devi prima comprendere un errore di programmazione comune: continuare a leggere dopo aver liberato memoria.

Quando l'applicazione è in esecuzione, è necessario richiedere memoria al sistema operativo per salvare i dati. Quando i dati non sono più necessari, il programma dovrebbe rilasciare la memoria corrispondente in modo che il sistema possa riallocarla ad altri usi.

Se un programma libera un blocco di memoria ma continua a leggere i dati da esso, si verifica il cosiddetto errore "use-after-free". Questo è un tipico difetto di programmazione che può causare la lettura di dati non validi, il crash e in alcuni casi persino problemi di sicurezza.

Alcuni programmi nei primi ambienti Windows facevano affidamento inaspettatamente su questo comportamento errato.

Secondo un articolo pubblicato nel 2000 dal co-fondatore di Stack Overflow ed ex ingegnere Microsoft Joel Spolsky, le prime versioni Windows di "SimCity" presentavano problemi simili. Jon Ross, lo sviluppatore di questa versione, ha poi ammesso di aver lasciato accidentalmente un bug: il gioco avrebbe continuato a leggere i dati originariamente memorizzati lì dopo aver liberato la memoria.

Il motivo per cui questo problema non è stato immediatamente scoperto è legato al metodo di gestione della memoria di Windows 3.x in quel momento. In determinate circostanze, dopo che il programma ha liberato la memoria, i dati rilevanti non vengono immediatamente sovrascritti da altri utilizzi, quindi quando il gioco continua a leggere, è ancora possibile ottenere il contenuto originale.

In altre parole, c'è un bug nel gioco stesso, è solo il comportamento del vecchio sistema operativo che maschera il problema.

Quando Microsoft sviluppò Windows 95, le cose cambiarono. Il nuovo sistema adottava un diverso meccanismo di gestione della memoria e "SimCity" iniziò a non funzionare correttamente nella versione beta di Windows 95.

Microsoft si trovava di fronte a due scelte: chiedere agli sviluppatori del gioco di correggere il programma o lasciare che il sistema operativo continuasse a tollerare il bug.

Alla fine, Microsoft ha scelto quest'ultima.

Gli ingegneri hanno aggiunto un codice di compatibilità specifico per "SimCity" a Windows 95. Quando il sistema rileva che il gioco è in esecuzione, passa a una modalità speciale di allocazione della memoria che non rilascia immediatamente la memoria associata.

In questo modo, anche se il gioco continua a leggere i dati originali dopo aver liberato la memoria, è più probabile che ottenga i risultati attesi ed eviti arresti anomali.

Dal punto di vista dell'ingegneria del software moderna, questo approccio è piuttosto unico. In genere, gli sviluppatori di sistemi operativi non desiderano modificare il comportamento del sistema per coprire errori di programmazione nel software di terze parti. Ma l'obiettivo di Microsoft all'epoca era quello di garantire che il nuovo sistema potesse eseguire il software esistente, piuttosto che costringere gli utenti ad abbandonare i programmi originali per aggiornare il sistema operativo.

Questa decisione è diventata anche un caso tipico nella storia della compatibilità con Windows.

Da "SimCity" a EmulateHeap: il meccanismo di compatibilità si sta gradualmente espandendo

Il trattamento speciale riservato a SimCity è solo l'inizio.

Con la graduale evoluzione di Windows, Microsoft ha scoperto che non solo questo gioco, ma anche altre applicazioni si basavano su alcuni comportamenti speciali nel meccanismo di gestione della memoria delle versioni precedenti di Windows.

L'ingegnere Microsoft Raymond Chen ha spiegato questo problema in un articolo sulla tecnologia Windows pubblicato nel 2010. Alcuni programmi più vecchi continueranno a leggere i dati dalla memoria dopo che questa è stata liberata, presupponendo che esistano ancora i valori originali.

Quando questi programmi vengono eseguiti nelle versioni successive di Windows, a causa di modifiche nell'allocazione della memoria e nei metodi di riciclaggio, potrebbero leggere contenuti che sono stati sovrascritti da altri dati e quindi bloccarsi.

Se Microsoft scrivesse un pezzo di codice speciale per ciascun programma che presenta tali problemi, non solo i costi di manutenzione sarebbero elevati, ma sarebbe anche difficile far fronte al crescente numero di vecchi software.

Di conseguenza, Microsoft ha lanciato un meccanismo di correzione della compatibilità chiamato EmulateHeap.

A differenza del codice specifico di SimCity, EmulateHeap fornisce un approccio più generale. Intercetta le chiamate delle applicazioni alle interfacce relative alla gestione della memoria e le inoltra a un'implementazione alternativa che emula il comportamento di Windows 95.

Ciò comporta una serie di interfacce relative alla gestione della memoria heap, tra cui HeapCreate, LocalLock e GlobalReAlloc. Aggiungendo un livello di compatibilità tra le applicazioni e i meccanismi di gestione della memoria sottostanti, il sistema può consentire ad alcuni programmi legacy di continuare a funzionare nel modo a loro familiare.

Ciò che è ancora più sorprendente è che Microsoft abbia adottato un'implementazione abbastanza semplice.

Secondo la spiegazione di Raymond Chen, gli ingegneri Microsoft hanno copiato direttamente il codice sorgente del gestore della memoria heap di Windows 95, lo hanno ricompilato e lo hanno aggiunto al Windows Application Compatibility Framework.

Ciò significa che un codice di gestione della memoria di Windows 95 molto importante viene effettivamente mantenuto nella moderna infrastruttura di compatibilità di Windows.

Tuttavia, ciò non significa che Windows 11 abbia eseguito il gestore della memoria di Windows 95.

EmulateHeap è un meccanismo di compatibilità abilitato su richiesta. Solo quando un'applicazione specifica è configurata per utilizzare questa correzione verrà caricato il codice legacy corrispondente. Per i programmi normali che non abilitano questa funzionalità, Windows non passerà automaticamente al metodo di gestione della memoria di Windows 95 a causa di questo meccanismo di compatibilità.

Inoltre, EmulateHeap non ha la stessa funzione del codice di compatibilità scritto appositamente per "SimCity" da Microsoft. Entrambi riflettono la filosofia progettuale di Microsoft di cercare di mantenere il vecchio software in esecuzione normalmente, ma i loro metodi di risoluzione dei problemi e il loro ambito di applicazione sono diversi.

Come trovare EmulateHeap in Windows 11?

Per gli utenti che desiderano comprendere il meccanismo di compatibilità interna di Windows, Microsoft fornisce uno strumento chiamato Compatibility Administrator per visualizzare le correzioni di compatibilità delle applicazioni supportate dal sistema.

Questo strumento è incluso in Windows Assessment and Deployment Kit (Windows ADK) ed è destinato principalmente agli amministratori di sistema e ai professionisti IT. La versione dello strumento pertinente rilasciata da Microsoft nel settembre 2026 supporta Windows 11 26H2.

Windows Latest ha riferito che l'autore ha trovato EmulateHeap sul suo computer Windows 11 26H2. I passaggi specifici sono i seguenti:

Per prima cosa scarica Windows ADK dal sito Web ufficiale di Microsoft e avvia il programma di installazione. Nell'interfaccia di selezione delle funzioni, seleziona Strumenti di compatibilità delle applicazioni, che è lo strumento di compatibilità delle applicazioni, quindi completa l'installazione.

Una volta completata l'installazione, cerca Compatibility Administrator nel menu Start e apri la versione a 32 bit. Poiché un gran numero di vecchi programmi dell'era Windows 95 utilizzano l'architettura a 32 bit, la versione a 32 bit è uno strumento che vale la pena utilizzare per primo quando si controllano tali meccanismi di compatibilità.

Dopo aver aperto il programma, fai clic con il pulsante destro del mouse su Nuovo database nell'area Database personalizzati, seleziona Crea nuovo, quindi accedi alla Modalità compatibilità. Quindi, cerca EmulateHeap nell'elenco delle correzioni di compatibilità disponibili per visualizzare questa funzionalità.

Compatibility-Administratir-32-bit-in-Start.jpg

Creazione-di-un-nuovo-database-di-modalità-di-compatibilità.jpgEmulateHeap-in-Compatibility-Administrators-list-of-compatibility-fixes-on-Windows-11-26H2.jpg

È importante notare che trovare una correzione di compatibilità nell'elenco non significa che tutti i programmi meno recenti verranno eseguiti correttamente.

Microsoft ha già riscontrato problemi simili in passato. Dopo l'aggiornamento di Windows 11 22H2, alcuni utenti hanno segnalato che il gioco "Grand Theft Auto: Vice City" ha riscontrato problemi di perdita del suono e che "Need for Speed: Most Wanted" si è bloccato dopo aver abilitato alcune correzioni di compatibilità.

Ciò significa che la correzione rapida per la compatibilità stessa potrebbe causare conflitti anche con altri componenti di sistema o codice di gioco. Anche se un certo meccanismo può risolvere un certo tipo di problemi storici, ciò non significa che sia adatto a tutti i programmi.

Pertanto, non è necessario che gli utenti ordinari abilitino EmulateHeap solo per provare a eseguire un vecchio gioco. Se riscontri un problema con il software precedente non in esecuzione, è più prudente cercare consigli specifici sulla compatibilità per quel programma prima di decidere se applicare la correzione.

Perché Windows non pulisce semplicemente il vecchio codice?

Da Windows 95 a Windows 11, Microsoft ha apportato numerose modifiche al sistema operativo. Che si tratti di gestione della memoria, sistemi grafici, meccanismi di sicurezza o ambiente di esecuzione di driver e applicazioni, Windows moderno è molto diverso dai sistemi degli anni '90.

Ma il sistema operativo non è un prodotto che può essere smontato e ricostruito in qualsiasi momento, indipendentemente dal vecchio software.

Nel corso di decenni di sviluppo, milioni di applicazioni hanno fatto affidamento sulle interfacce e sui comportamenti forniti da Windows. Alcuni di questi programmi sono sviluppati in stretta conformità con la documentazione ufficiale, mentre altri si basano inconsapevolmente sul comportamento di determinate versioni del sistema.

Finché questi programmi saranno ancora utilizzati, Microsoft dovrà considerare il possibile impatto della modifica dei meccanismi sottostanti.

Per i software comuni, i problemi di compatibilità dopo gli aggiornamenti del sistema operativo possono causare solo alcuni inconvenienti. Ma per il software aziendale, gli strumenti professionali e i programmi legacy che eseguono ancora attività aziendali reali, le interruzioni di compatibilità possono causare danni ancora maggiori.

Di conseguenza, Microsoft mantiene da tempo un ampio framework di compatibilità delle applicazioni. La sua funzione non è solo quella di indicare al vecchio programma su quale versione di Windows è in esecuzione, ma anche di intercettare alcune chiamate di sistema, regolare comportamenti specifici o abilitare correzioni di compatibilità specializzate basate sul programma specifico.

Queste misure sono generalmente trasparenti per gli utenti. Quando viene avviato un vecchio programma, il sistema applicherà le correzioni corrispondenti in background e gli utenti potrebbero non essere consapevoli del fatto che il sistema operativo ha modificato alcuni comportamenti del programma.

EmulateHeap è un esempio di questo sistema.

La sua esistenza non significa che Microsoft ritenga che Windows 95 abbia una migliore gestione della memoria rispetto ai sistemi moderni, ma significa che alcuni programmi più vecchi si sono basati sul comportamento passato. Per evitare di rompere questi programmi, Microsoft ha scelto di mantenere una serie di implementazioni legacy nel framework di compatibilità piuttosto che forzare la riscrittura di tutto il software secondo le regole dei sistemi moderni.

Questo approccio presenta sia vantaggi che costi. Può prolungare la vita utile del vecchio software e ridurre gli ostacoli per gli utenti nell'aggiornamento del sistema, ma aumenterà anche la complessità della manutenzione del sistema operativo, facendo sì che alcuni codici storici esistano per lungo tempo nei sistemi moderni.

Non tutti i software classici ricevono lo stesso trattamento

La volontà di Microsoft di conservare codici di compatibilità speciali per alcuni vecchi programmi non significa che tutto il software classico possa continuare a funzionare nei moderni Windows.

Un tipico esempio è 3D Pinball, un tempo integrato in Windows, che è un gioco di flipper tridimensionale. Uno dei motivi per cui il gioco non era più disponibile con una versione a 64 bit di Windows era che presentava problemi di compatibilità a 64 bit che richiedevano lavoro aggiuntivo e Microsoft non ha dedicato le risorse per risolverli completamente.

Ciò è in contrasto con la situazione con EmulateHeap.

Per alcuni software ampiamente utilizzati, che hanno un valore commerciale importante o che possono continuare a funzionare con modifiche relativamente limitate, Microsoft potrebbe essere disposta a investire risorse per mantenere la compatibilità. Per altri programmi, Microsoft potrebbe scegliere di non fornire più supporto se il costo della riparazione è troppo elevato o se la domanda degli utenti è diminuita in modo significativo.

Pertanto, la compatibilità con Windows non è un impegno illimitato. Richiede compromessi costanti tra costi di manutenzione, esigenze degli utenti, rischi per la sicurezza e complessità tecnica.

Vale la pena notare che negli ultimi anni Microsoft ha continuato a modernizzare l'interfaccia di Windows. Ad esempio, l'azienda sta gradualmente sostituendo alcune finestre di dialogo delle proprietà lasciate dall'era di Windows 95 con nuove interfacce basate su WinUI 3.

Ma la modernizzazione dell'interfaccia e il mantenimento della compatibilità sottostante possono essere eseguiti contemporaneamente. La finestra vista dall'utente potrebbe aver adottato una nuova tecnologia di progettazione, ma parte del vecchio codice viene ancora conservato all'interno del sistema per garantire che le applicazioni storiche non perdano la compatibilità a causa degli aggiornamenti all'interfaccia o all'architettura del sistema.

Questa è anche una delle differenze importanti tra Windows e molte piattaforme software relativamente giovani: Windows non solo deve supportare le applicazioni moderne, ma deve anche accogliere il più possibile l'enorme ecosistema software che si è formato nel corso di decenni.

La tradizione di compatibilità che continua da Windows 95 a Windows 11

La storia di EmulateHeap può sembrare solo un aneddoto tecnico sui vecchi giochi e sui gestori di memoria, ma in realtà riflette una strategia fondamentale di lunga data di Windows.

Quando "SimCity" ha avuto problemi nella versione beta di Windows 95, Microsoft ha scelto di modificare il sistema operativo per tollerare il bug nel gioco. Da allora, man mano che i programmi più vecchi sono stati esposti alla dipendenza dal comportamento storico del sistema, Microsoft ha gradualmente stabilito un meccanismo di riparazione della compatibilità più completo.

Oggi, Windows 11 conserva ancora il codice in grado di simulare il comportamento di gestione della memoria di Windows 95 e gli utenti possono trovarlo tramite gli strumenti di gestione forniti da Microsoft.

Ciò non significa che il sistema operativo Windows moderno si basi ancora sull'architettura principale di Windows 95, né significa che i normali computer eseguano un vecchio sistema operativo in background. Ciò che è stato realmente trasferito è parte del codice di compatibilità e delle idee di progettazione di Microsoft per evitare il più possibile di danneggiare il vecchio software.

Per un sistema operativo vecchio di decenni, questo approccio rappresenta sia un onere tecnico che un vantaggio competitivo. Quando gli utenti eseguono l'aggiornamento a una nuova versione di Windows, spesso desiderano continuare a utilizzare il software acquistato, gli strumenti con cui hanno familiarità e i flussi di lavoro accumulati nel corso degli anni. Conservando parte del vecchio codice, Microsoft ha ridotto i rischi di compatibilità causati dall'aggiornamento del sistema operativo.

Da questo punto di vista, il gestore della memoria di Windows 95 nascosto in Windows 11 non è una semplice reliquia storica, ma una manifestazione concreta dell'impegno a lungo termine di Microsoft nei confronti della compatibilità del software. Anche se le interfacce dei sistemi operativi continuano a cambiare e le piattaforme hardware continuano ad aggiornarsi, alcuni codici vecchi di decenni potrebbero continuare a funzionare semplicemente perché consentono a un vecchio gioco o programma di continuare a funzionare sui computer di oggi.

Tag correlati

Articoli correlati

Commenti

0/500
Captcha (click to refresh)
Nessun commento