Un singolo processo a 32 bit in un sistema operativo a 64 bit è limitato a 2 GB. Ma se è compilato in un file EXE con IMAGE_FILE_LARGE_ADDRESS_AWARE
bit impostato, ha un limite di 4 GB, non 2 GB - vedere https://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
Le cose che senti su flag di avvio speciali, 3 GB, /3GB
switch o /userva
riguardano tutti i sistemi operativi a 32 bit e non si applicano a Windows a 64 bit.
Vedi https://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx per maggiori dettagli.
Per quanto riguarda i sistemi operativi a 32 bit, contrariamente a quanto si crede, non esiste un limite fisico di 4 GB per i sistemi operativi a 32 bit. Ad esempio, i sistemi operativi per server a 32 bit come Microsoft Windows Server 2008 a 32 bit possono accedere fino a 64 GB(Edizioni Windows Server 2008 Enterprise e Datacenter) - tramite Physical Address Extension (PAE), che è stato introdotto per la prima volta da Intel nel Pentium Pro, e successivamente da AMD nel processore Athlon - definisce una gerarchia di tabelle di pagine di tre livelli, con voci di tabella di 64 bit ciascuna invece di 32, consentendo a queste CPU di accedere direttamente a uno spazio di indirizzi fisici più grande di 4 gigabyte - quindi in teoria, un sistema operativo a 32 bit può accedere in teoria a 2 ^ 64 byte, o 17.179.869.184 gigabyte, ma il segmento è limitato da 4 GB. Tuttavia, per motivi di marketing, Microsoft ha limitato la memoria massima accessibile sui sistemi operativi non server a soli 4 GB, o addirittura 3 GB effettivi. Pertanto, un singolo processo può accedere a più di 4 GB su un sistema operativo a 32 bit e il server Microsoft SQL è un esempio.
I processi a 32 bit in Windows a 64 bit non hanno alcuno svantaggio rispetto ai processi a 64 bit nell'utilizzo dello spazio degli indirizzi virtuali del kernel condiviso (chiamato anche spazio di sistema ). Tutti i processi, sia a 64 bit che a 32 bit, sotto Windows a 64 bit condividono lo stesso spazio di sistema a 64 bit.
Dato che lo spazio di sistema è condiviso tra tutti i processi , su Windows a 32 bit , i processi che creano grandi quantità di handle (come thread, semafori, file, ecc.) Consumano spazio di sistema dagli oggetti del kernel e possono esaurire la memoria anche se hai molta memoria disponibile in totale. Al contrario, su Windows a 64 bit , lo spazio del kernel è a 64 bit e non è limitato da 4 GB. Tutte le chiamate di sistema effettuate dalle applicazioni a 32 bit vengono convertite in chiamate native a 64 bit in modalità utente .