8

Czytałem, że 32-bitowe aplikacje systemu Windows są ograniczone do 2 GB pamięci RAM, ponieważ górne 2 GB miejsca adresowania jest zarezerwowane dla systemu operacyjnego Windows (i, iirc, VRAM). Jeśli użyjesz flagi/3GB na 32-bitowym WinXp, możesz otrzymać do 3 GB pamięci RAM do adresowania, ale zazwyczaj musisz poprawić wartości userva. Słyszałem, że w 64-bitowych wersjach systemu Windows, z dużą flagą świadomą adresu w nagłówku PE i ponad 4 GB pamięci RAM, możliwe jest, aby aplikacja wykorzystywała wszystkie 4 GB przestrzeni adresowej do własnego zarządzania pamięcią.Jak działa flaga Large Address Aware dla aplikacji 32-bitowych na komputerach 64-bitowych?

Z drugiej strony, jestem prawie pewien, że po wywołaniu interfejsu API systemu Windows trzeba wywoływać lokalizacje pamięci w 32-bitowej przestrzeni adresowej, która jest dostarczana. A więc, dokładnie ile pamięci RAM może wykorzystać 32-bitowa aplikacja obsługująca wiele adresów w środowisku 64-bitowym? I dlaczego?

Dziękuję.

Odpowiedz

5

Wirtualna przestrzeń adresowa została rozszerzona do 4 GB. Jeśli nie używasz urządzenia Address Windowing Extension API, maksymalna ilość dostępnej pamięci to 4 GB. Część tej przestrzeni zostanie zajęta przez system operacyjny dla plików .dll i innych podobnych rzeczy, ale będzie można odzyskać pamięć, która używa wszystkich 32-bitowych wskaźników.

Nawiasem mówiąc, jeśli nie jesteś duży adres adres, wszystkie wskaźniki pamięci nie będą negatywne, gdy są przesyłane do INT_PTR. Jest to w rzeczywistości źródło więcej niż kilku subtelnych błędów podczas używania flagi dużego adresu, ponieważ wskaźniki traktowane są jako wartości podpisane.

+0

Zaczekaj chwilę, w takim razie czy można używać AWE na 32-bitowym Windows Xp OS, aby prawidłowo skorzystać z 4 GB pamięci RAM zamiast/3GB głupoty? –

+7

+1 Jeśli planujesz uruchomić pod/LARGEADDRESSAWARE, musisz być ostrzeżony, że różne oprogramowanie zawiera błędy w przypadku 32-bitowych wskaźników> 2 GB. Nawet niektóre funkcje MS API (patrzę na ciebie GetCursorPos w systemie Vista!) Sposobem na wypłukanie tych problemów i obejście ich, jeśli musisz użyć [przypisanie pamięci z góry] (http://msdn.microsoft .com/ja-jp/isv/bb190527 (l = en-us)), który jest włączony z ustawieniem rejestru. –

+0

Tak, ale musisz wyraźnie zamapować fizyczne strony pamięci na wirtualną przestrzeń adresową. Jest podobny do zmiany banku VESA w starej, dobrej epoce DOS. – MSN

Powiązane problemy