8

Ho letto che le applicazioni Windows a 32 bit sono limitate a 2 GB di RAM perché i 2 GB superiori di spazio di indirizzamento sono riservati per il sistema operativo Windows (e, iirc, VRAM). Se si utilizza il flag/3GB su WinXp a 32 bit, è possibile ottenere fino a 3 GB di RAM disponibili per l'indirizzamento, ma in genere è necessario modificare i valori di userva. Ho sentito che su edizioni a 64 bit di Windows, con un grande flag di indirizzamento nell'intestazione PE e oltre 4 GB di RAM, è possibile che un'applicazione utilizzi tutti i 4 GB di spazio di indirizzamento per la propria gestione della memoria.Come funziona il flag Large Address Aware per applicazioni a 32 bit su computer a 64 bit?

D'altra parte, sono abbastanza sicuro che quando chiami l'API di Windows, devi chiamare le posizioni di memoria all'interno dello spazio degli indirizzi a 32 bit che ti viene fornito. Quindi, esattamente quanta RAM può utilizzare un'applicazione di grandi dimensioni per indirizzi sensibili a 32 bit per se stessa in un ambiente a 64 bit? E perché?

Grazie.

risposta

5

Lo spazio di indirizzi virtuali è esteso a 4 GB. Se non si utilizza Address Windowing Extension API, la quantità massima di memoria a cui è possibile accedere è 4 GB. Alcuni di questi spazi saranno occupati dal sistema operativo per .dlls e altre cose simili, ma sarà possibile recuperare la memoria che utilizza tutti i 32 bit di un puntatore.

Per inciso, se non si conosce l'indirizzo di grandi dimensioni, tutti i puntatori di memoria non saranno negativi quando si esegue il cast su un INT_PTR. Questa è in realtà una fonte di più di qualche bug sottile quando si utilizza il flag di grande indirizzamento, poiché i puntatori sono trattati con valori firmati.

+0

Aspetta un attimo, in tal caso, è possibile utilizzare AWE su un sistema operativo Windows XP a 32 bit per sfruttare correttamente 4 GB di RAM anziché la stupidità/3 GB? –

+7

+1 Se si prevede di eseguire in/LARGEADDRESSAWARE, si noti che vari software presentano bug con puntatori a 32 bit> 2 GB. Anche alcune funzioni API MS (sto guardando GetCursorPos su Vista!) Il modo per svuotare questi problemi e aggirarli se è necessario è utilizzare [top down memory allocation] (http://msdn.microsoft .com/ja-jp/isv/bb190527 (l = it-it)) che è abilitato con un'impostazione di registro. –

+0

Sì, ma è necessario mappare esplicitamente le pagine di memoria fisica in uno spazio di indirizzi virtuale. È simile al passaggio dalla banca VESA alla buona vecchia era del DOS. – MSN

Problemi correlati