Avete bisogno di più RAM per eseguire programmi a 32 bit su Windows a 64 bit?

Avete bisogno di più RAM per eseguire programmi a 32 bit su Windows a 64 bit? / Chiedi agli esperti

La maggior parte dei computer viene fornita con una versione a 64 bit di Windows e spesso con una quantità minima di RAM. Ciò mette in dubbio il rendimento di questi sistemi. Ciò è particolarmente vero quando gli utenti vogliono eseguire il loro software legacy a 32 bit su questi nuovi computer.

Il che solleva una domanda interessante. Hai bisogno di più o meno RAM Quanta RAM hai davvero bisogno? Quanta RAM hai davvero bisogno? La RAM è come una memoria a breve termine. Più fai il multitasking, più ne hai bisogno. Scopri quanto il tuo computer ha, come ottenere il massimo da esso o come ottenerne di più. Ulteriori informazioni per eseguire un'applicazione a 32 bit su una versione a 64 bit di Windows Che cos'è l'elaborazione a 64 bit? Che cos'è l'elaborazione a 64 bit? La confezione di un computer o di un computer è affollata di termini tecnici e distintivi. Uno dei più importanti è 64-bit. Leggi di più ? Questa settimana, Bruce Epper scopre.

Un lettore chiede:

È vero che consumano applicazioni a 32 bit su un sistema Windows a 64 bit 1,5 volte più memoria rispetto all'esecuzione dell'app 32-bit con un sistema operativo Windows a 32 bit?

La risposta di Bruce:

Abbiamo già discusso i vantaggi e gli svantaggi di mantenere tutto a 64 bit e alcuni degli effetti di “miscelazione e abbinamento” In che modo le prestazioni di Windows sono influenzate dall'hardware e dal software In che modo le prestazioni di Windows sono influenzate dall'hardware e dal software In teoria, il software a 32 bit potrebbe sovraperformare la sua controparte a 64 bit, a seconda della configurazione dell'hardware. Sembra complicato? Siamo qui per dare un senso e aiutarti a ottenere le migliori prestazioni dal tuo sistema. Leggi di più . Oggi esamineremo come le applicazioni a 32 bit vengono eseguite su versioni a 64 bit di Windows.

Un sistema operativo Windows a 64 bit non può eseguire un programma Windows a 32 bit senza ulteriore aiuto. Sono troppo diversi: da indicatori e tipi di dati, a come le chiamate di sistema (come i programmi utilizzano le risorse del sistema operativo sottostante). Hai bisogno di un modo per renderli compatibili.

Capire WoW64

Windows utilizza il sottosistema WoW64 (Windows32 su Windows64) per compensare le differenze. Funziona efficacemente come un mini emulatore di Windows a 32 bit su sistemi x64 e un emulatore completo su sistemi Itanium (IA64).

I sistemi IA64 richiedono un emulatore completo a causa delle differenze nelle istruzioni del processore e nelle dimensioni della pagina di memoria (4K in x86 e x64, 8K in IA64). Poiché i processori x64 hanno tutte le istruzioni dei processori x86 e utilizzano le stesse dimensioni della pagina di memoria, non ha la necessità di un emulatore completo.

In entrambi i casi, WoW64 fornisce un'interfaccia tra il kernel di Windows a 64 bit e la versione a 32 bit di ntdll.dll (che contiene un elenco delle funzioni del kernel di base di Windows), intercettando le chiamate del kernel e modificandole in modo che possano essere elaborate da le funzioni native a 64 bit fornite dal kernel di Windows.

Ci sono 3 file DLL usati sui sistemi x64 / IA64 per ottenere questo: wow64cpu.dll, wow64win.dll e wow64.dll. Le loro funzioni sono di astrarre le caratteristiche del processore e fornire thunk (ci arriveremo più tardi) in win32k.sys che fornisce il file “finestra” funzionalità e ntoskrnl.exe che contiene l'esecutivo, il kernel, il gestore della memoria, lo scheduler dei processi (da non confondere con l'Utilità di pianificazione accessibile dal Pannello di controllo) e altri elementi fondamentali del sistema operativo.

Un thunk è una subroutine (si pensi a una serie di istruzioni che eseguono un singolo task) che consente a un programma di eseguire una subroutine o una funzione comune nel sistema.

In questo caso, estrae gli argomenti dallo stack di chiamate del programma a 32 bit, li converte nelle relative controparti a 64 bit e effettua la chiamata di sistema a 64 bit. Al ritorno dalla chiamata, convertirà i risultati a 64 bit a 32 bit e li riporterà nello stack di chiamate del programma affinché il chiamante possa utilizzare.

Tutto il thunking è fatto in modalità utente (che ha permessi limitati) per due motivi. Innanzitutto, riduce al minimo gli effetti degli errori nel codice che potrebbero causare un buco di sicurezza, un danneggiamento dei dati o un arresto anomalo del sistema se eseguito in modalità kernel.

In secondo luogo, riduce l'impatto sulle prestazioni che avrebbe se fosse eseguito in modalità kernel (la modalità utilizzata dalle parti essenziali del sistema operativo) a causa dell'overhead coinvolto quando si passa dalla modalità utente alla modalità kernel e viceversa.

Tornando ai sistemi Itanium, ci sono altre importanti differenze da notare. I sistemi IA64 utilizzano due file aggiuntivi. IA32exec.bin è l'emulatore del software x86 e Wowia32x.dll fornisce l'interfaccia tra WoW64 e l'emulatore software.

Un processo a 32 bit caricherà questi file e la versione a 64 bit di ntdll.dll. Questi sono gli unici binari a 64 bit che possono essere caricati in un processo a 32 bit prima di Windows 7. Windows 7 e versioni successive hanno anche un'altra DLL, apisetschema.dll, che verrà caricata in tutti i processi.

Quando viene avviato un processo a 32 bit, carica Wow64.dll che a sua volta carica la versione a 32 bit di ntdll.dll e qualsiasi DLL a 32 bit necessaria da % SystemRoot% \ SysWOW64. La maggior parte di questi file sono identici ai binari su un sistema a 32 bit, anche se alcuni sono stati riscritti per comportarsi diversamente con WOW64.

Guardando la lista delle DLL caricate possiamo vedere che ci sono 9 DLL caricate nel processo sotto Win64 che non sono presenti per il sistema Win32.

Ora, potresti essere tentato di esaminare le dimensioni dei file, aggiungerli e usarli come base per la quantità di memoria extra utilizzata, ma si otterrebbero risultati inaccurati. Questi file, per loro natura, sono progettati per essere componenti condivisi e, di conseguenza, il primo file che richiede una DLL lo carica in memoria.

I programmi successivi che richiedono la stessa DLL non caricano l'intero componente in memoria. Ottengono un puntatore al componente già caricato e allocano RAM per gli elementi aggiuntivi che vengono caricati nel processo.

La nostra installazione di test

Per vedere cosa sta succedendo, ho installato due macchine virtuali con Windows 7 Ultimate con 2 GB di RAM allocati a ciascuno. Uno di questi è la versione a 32 bit e l'altra a 64 bit. Entrambi sono stati sottoposti allo stesso identico processo di installazione e patching.

Dopo che entrambi i sistemi sono stati riparati, ho disabilitato il file di scambio su entrambi per ottenere un'immagine migliore dell'utilizzo della memoria assicurando che la RAM non potesse essere scaricata sul disco. Una volta completato, è stato installato LibreOffice 5.0.3.2.

Una copia di Sysinternals Process Explorer Process Explorer - La più potente sostituzione di Task Manager [Windows] Process Explorer - La più potente sostituzione di Task Manager [Windows] Siamo onesti, il Task Manager di Windows non è eccezionale per comprendere e gestire i processi in esecuzione sul tuo computer. Anche su Windows 8, dove è molto migliorato, il task manager non può avvicinarsi al ... Read More è stato inserito anche su entrambe le macchine. Questo è lo strumento che ho usato per raccogliere informazioni sull'utilizzo della memoria. L'impostazione di colonna predefinita è stata modificata in modo da poter esaminare il working set e l'utilizzo privato WS.

Questi numeri di serie di lavoro riflettono la quantità di RAM utilizzata dai programmi. Si è complicato un po 'oltre, riflettendo la quantità di memoria utilizzata dalle librerie condivise anche se erano già state caricate da un altro processo. Per questo motivo, se si aggiunge l'intera colonna, è possibile finire con un totale maggiore della RAM installata. Il working set è ancora il miglior indicatore di esattamente quanta memoria è necessaria per un processo.

I processi che stiamo esaminando non sono neanche soli. I vari programmi di LibreOffice avviano un altro processo, soffice.exe, che eseguirà un altro processo, soffice.bin. Dobbiamo esaminare i totali di tutti e tre i processi per vedere l'effettivo utilizzo della memoria di ciascun programma.

Per il test iniziale, ho semplicemente aperto individualmente Writer, Calc e Impress per verificare la quantità di memoria che consumano senza caricare alcun dato ed esportato i dati da Process Explorer. Con Calc e Impress, avevo aperto rispettivamente un file .xls da 3,7 MB e un file .pptx da 3,9 MB e ho registrato il nuovo utilizzo della memoria. I risultati possono essere visualizzati nella tabella seguente. Tutti i dati sono in KB.

La grande sorpresa è avvenuta con Impress. Senza un documento utilizzava il 4,1% in più di RAM sul sistema a 64 bit e il 9,9% Di meno con il documento caricato. Ho tirato fuori alcune altre presentazioni e ho avuto risultati simili con tutti loro. Il sistema a 64 bit ha finito con meno RAM rispetto al sistema a 32 bit.

Quindi, le versioni a 64 bit di Windows richiedono più RAM delle loro controparti a 32 bit quando vengono eseguite applicazioni a 32 bit? In generale, si.

Ma hai bisogno di aggiornare la tua RAM? Probabilmente no. La differenza veramente non è così massiccio Non è certamente 1,5 volte diverso.

Scopri di più su: 64-Bit, memoria del computer, Windows.