Annuncio pubblicitario

La maggior parte dei computer oggi viene fornita con una versione a 64 bit di Windows e spesso una quantità minima di RAM. Ciò mette in dubbio l'efficacia 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. Fai serve più o meno RAM Di quanta RAM hai davvero bisogno?La RAM è come la memoria a breve termine. Più multitasking, più hai bisogno. Scopri quanto ha il tuo computer, come ottenere il massimo da esso o come ottenere di più. Leggi di più per eseguire un'applicazione a 32 bit su a Versione a 64 bit di Windows Che cos'è il calcolo a 64 bit?La confezione di un computer o hardware è affollata di termini e badge tecnici. Uno dei più importanti è a 64 bit. Leggi di più ? Questa settimana, Bruce Epper lo scopre.

Un lettore chiede:

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

instagram viewer

Risposta di Bruce:

In precedenza abbiamo discusso dei vantaggi e degli svantaggi di mantenere tutto a 64 bit su tutta la linea e alcuni dei effetti del "mixaggio e abbinamento" In che modo le prestazioni di Windows sono influenzate da hardware e softwareIn teoria, il software a 32 bit potrebbe superare 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 il modo in cui 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 semplicemente troppo diversi: da puntatori e tipi di dati, a come il sistema chiama (come i programmi usano le risorse del sistema operativo sottostante). Hai bisogno di un modo per renderli compatibili.

Comprensione di 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 usano le stesse dimensioni della pagina di memoria, non ha bisogno 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 (contiene un elenco del core Funzioni del kernel di Windows), intercettare le chiamate del kernel e modificarle in modo che possano essere elaborate dalle funzioni native a 64 bit fornite da Windows kernel.

A tale scopo esistono 3 file DLL utilizzati sui sistemi x64 / IA64: wow64cpu.dll, wow64win.dll e wow64.dll. Le loro funzioni consistono nell'astrarre le caratteristiche del processore e fornire thunk (ci arriveremo più tardi) in win32k.sys che fornisce la funzionalità "finestra" e ntoskrnl.exe che contiene il dirigente, il kernel, il gestore della memoria, scheduler di processo (da non confondere con l'Utilità di pianificazione accessibile dal Pannello di controllo) e altri elementi chiave del funzionamento sistema.

caricati-DLL

Un thunk è una subroutine (pensate a queste come una serie di istruzioni che eseguono una singola attività) che consente a un programma di eseguire una subroutine comune o una funzione nel sistema.

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

Tutto il thunking viene eseguito in modalità utente (che dispone di autorizzazioni limitate) per due motivi. Innanzitutto, riduce al minimo gli effetti dei bug nel codice che potrebbero causare un buco nella 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 eseguito in modalità kernel (la modalità utilizzata dalle parti essenziali del sistema operativo) a causa del sovraccarico coinvolto quando si passa da modalità utente e modalità kernel e ritorno.

Tornando ai sistemi Itanium, ci sono alcune altre importanti differenze da notare. I sistemi IA64 utilizzano due file aggiuntivi. IA32exec.bin è l'emulatore 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 i soli 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.

processo explorer

Quando viene avviato un processo a 32 bit, caricherà Wow64.dll che a sua volta carica la versione a 32 bit di ntdll.dll e tutte le DLL a 32 bit necessarie da % SystemRoot% \ SysWOW64. La maggior parte di questi file sono identici ai file binari su un sistema a 32 bit sebbene alcuni siano stati riscritti per comportarsi in modo diverso in WOW64.

Guardando l'elenco delle DLL caricate possiamo vedere che ci sono 9 DLL caricate nel processo in Win64 che non sono presenti per il sistema Win32.

Ora, potresti essere tentato di esaminare le dimensioni dei file, aggiungerle e utilizzarle come base per quanta memoria aggiuntiva viene utilizzata, ma potresti finire con risultati imprecisi. Questi file, per loro natura, sono progettati per essere componenti condivisi e, di conseguenza, il primo file a richiedere 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 la RAM per gli elementi aggiuntivi che vengono caricati nel processo.

La nostra configurazione di test

Per vedere cosa sta succedendo, ho configurato due macchine virtuali che eseguono Windows 7 Ultimate con 2 GB di RAM assegnate a ciascuna. Uno di questi è la versione a 32 bit e l'altro a 64 bit. Entrambi hanno subito lo stesso processo di installazione e patch.

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

lo-calc

Una copia di Sysinternals Process Explorer Process Explorer: la sostituzione del Task Manager più potente [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 ... Leggi di più è stato anche posizionato su entrambe le macchine. Questo è lo strumento che ho usato per raccogliere informazioni sull'utilizzo della memoria. L'impostazione della colonna predefinita è stata modificata in modo da poter esaminare il Working Set e l'utilizzo di WS Private.

Questi numeri di set di lavoro riflettono la quantità di RAM utilizzata dai programmi. Ciò ha complicato un po 'di più riflettendo la quantità di memoria utilizzata dalle librerie condivise anche se erano già state caricate da un altro processo. Per questo motivo, se aggiungi l'intera colonna, è possibile finire con un totale maggiore della RAM installata. Il set di lavoro è ancora il miglior indicatore della quantità di memoria necessaria per un processo.

Neanche i processi che stiamo esaminando sono autonomi. I vari programmi di LibreOffice lanciano un altro processo, soffice.exe, che eseguirà l'ennesimo 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 Writer, Calc e Impress singolarmente per vedere quanta memoria consumano senza caricare alcun dato ed esportare 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 registrato il nuovo utilizzo della memoria. I risultati possono essere visualizzati nella tabella seguente. Tutti i dati sono in KB.

utilizzo della memoria

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

Quindi, le versioni a 64 bit di Windows richiedono più RAM rispetto alle loro controparti a 32 bit quando eseguono app a 32 bit? In generale si.

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

Bruce gioca con l'elettronica dagli anni '70, i computer dai primi anni '80 e risponde accuratamente a domande sulla tecnologia che non ha mai usato né visto per tutto il tempo. Si infastidisce anche tentando di suonare la chitarra.