Niedawno zaktualizowałem pamięć RAM komputera do 4 GB. Moja 32-bitowa instalacja systemu Windows pokazuje tylko 3574 MB pamięci. Jak zmusić system Windows do korzystania z pełnej ilości pamięci RAM?
90
Niedawno zaktualizowałem pamięć RAM komputera do 4 GB. Moja 32-bitowa instalacja systemu Windows pokazuje tylko 3574 MB pamięci. Jak zmusić system Windows do korzystania z pełnej ilości pamięci RAM?
Odpowiedzi:
Nie możesz:
Zobacz koleś, gdzie są moje 4 gigabajty pamięci RAM?
Jedynym praktycznym rozwiązaniem jest instalacja 64-bitowego systemu operacyjnego. W systemie Windows Vista i nowszych 32-bitowe i 64-bitowe klucze licencyjne są wymienne. Jeśli możesz pobrać nośnik instalacyjny systemu Windows dla 64-bitowej wersji systemu operacyjnego, możesz zainstalować go ponownie, używając oryginalnego klucza licencyjnego.
źródło
Po pierwsze, Windows XP (32-bitowy) obsługuje tylko 4 GB. Dotyczy to nie tylko systemu Windows XP. Zamiast tego dotyczy 32-bitowych komputerów stacjonarnych z systemem Windows - 32-bitowe systemy Linux z PAE, a wiele 32-bitowych wersji systemu Windows Server obsługuje ponad 4 GB na połączony artykuł. Nigdy nie zobaczysz ponad 4 GB, jeśli używasz 32-bitowego systemu Windows XP. Znalazłem jednak bardziej szczegółowy powód, dla którego twój system pokazuje mniej dostępnego pamięci RAM niż to, co jest faktycznie zainstalowane.
W przypadku problemu z pamięcią RAM 3 GB, a nie 4 GB (blog Microsoft MSDN):
Więcej informacji znajdziesz w źródle. Możesz jednak skorzystać z zainstalowanych pełnych 8 GB, postępując zgodnie z tymi instrukcjami .
Mówiąc z własnego doświadczenia, nie jest to nowy problem. Ten sam problem spotkałem kilka lat temu, kiedy zbudowałem 4-bitowy 32-bitowy system Windows Vista, kiedy Vista została wydana po raz pierwszy. W sieci było niezliczona liczba postów na forum związanych z tym samym tematem.
Przeczytaj także Microsoft KB 929605 - Pamięć systemowa zgłaszana w oknie dialogowym Informacje o systemie w systemie Windows Vista jest mniejsza niż można się spodziewać, jeśli zainstalowano 4 GB pamięci RAM .
źródło
Jeśli używasz 32-bitowego systemu Windows XP, nie jest to możliwe. Ponieważ nie ma wystarczającej przestrzeni adresowej, aby skorzystać z dodatkowej pamięci RAM
Najlepszym rozwiązaniem byłoby uaktualnienie do 64-bitowej wersji systemu Windows, ponieważ obsługuje on ponad 4 GB pamięci RAM.
źródło
2^32
wystarcza „przestrzeń adresowa”, aby zmieścić 4 GiB. Mylisz przestrzeń adresową i pamięć fizyczną. Każdy proces we współczesnych wersjach systemu Windows widzi pełną przestrzeń adresową 4 GiB, chociaż zwykle możliwe jest użycie tylko 2 GiB ze względu na partycjonowanie wirtualnej przestrzeni adresowej przez UM / KM.Jak powiedzieli inni, nie jest to możliwe.
Wyjaśnienie:
Każdy element pamięci ma adres. System operacyjny określa długość adresu. W przypadku starszych systemów operacyjnych długość adresu wynosi 32 bity, co pozwala tylko na 2 ^ 32 (4 294 967 296) adresów. Teraz, patrząc na tę liczbę, może się wydawać, że twój system operacyjny powinien obsługiwać 4 GB, ale cały inny sprzęt (co najważniejsze, ram wideo na karcie graficznej), który ma pamięć wewnętrzną, również jest mapowany do tej przestrzeni adresowej.
To tak, jakbyś próbował dystrybuować 1 200 000 sześciocyfrowych numerów telefonicznych.
źródło
Stara płyta główna obsługiwała tylko 4 GB fizycznej pamięci RAM, współczesne obsługują znacznie więcej. Procesor Intel P4 zawsze może adresować więcej niż 4 Gb (używając czegoś zwanego rozszerzeniem adresu fizycznego lub PAE)
Microstoft podjął „decyzję marketingową”, aby nie obsługiwać fizycznej przestrzeni adresowej większej niż 4 Gb w „klienckich” wersjach wszystkich 32-bitowych wersji swoich systemów operacyjnych - która obejmuje wszystkie z w2k do 32-bitowego systemu Windows 8 (jeśli odwiedzasz MS KB zauważycie, że wersje 32-bitowego serwera mogą obsługiwać znacznie więcej - do 128 Gb w 32-bitowej wersji „Enterprise Edition” - dlatego „właściwe” 32-bitowe systemy operacyjne (Linux itp.) na dokładnie tym samym sprzęcie mogą zawsze uzyskać dostęp do WSZYSTKICH fizyczna pamięć RAM.
(na marginesie - 32-bitowi użytkownicy Win7 mieli tak dość tego „głupiego” limitu, że „zhakowali” Kernal, aby umożliwić dostęp do pełnej fizycznej pamięci RAM. Nie trzeba dodawać, że to łamie twoją licencję i jest w rzeczywistości nielegalne w USA (DCMA )
Windows XP 32bit „rezerwuje” część przestrzeni adresowej lo 4 Gb na użytek sterownika. Nie ma powodu, dla którego nie można „adresować” fizycznej pamięci RAM przekraczającej 4 Gb (przy użyciu PAE), jednak wiele starszych STEROWNIKÓW w czasie w Windows XP Pro tego nie zrobiło i pojawia się błąd „BSOD” (nowoczesne sterowniki używają PAE poprawnie i W TEORII nie ma powodu, dla którego potrzebują więcej niż około 32 MB stron „lo” (jako „okienko”) łącznie, nawet do obsługi karty graficznej 2 Gb (2 gb będzie w przestrzeni „hi”, tj. powyżej 4 Gb znak)
W XP SP2 MS prawie trzykrotnie zwiększyło przestrzeń adresową „zarezerwowaną” dla kierowców, starając się wyeliminować BSOD i tak było odtąd (MS nie chce „debugować” sterowników == chcą sprzedać Ci 64-bitowy OS zamiast). Sprzęt RZECZYWISTY ma prawie zerowy wpływ na to „zarezerwowane” miejsce.
Tak więc, jeśli masz 4 GB lub więcej fizycznej pamięci RAM, najwięcej XP Pro sp2 + zobaczy około 3,25 GB. Resztę można uzyskać za pomocą różnych sterowników pamięci RAM (oczywiście nie MS) = idź poszukać czegoś, co używa „Niewidocznej przestrzeni adresowej” lub „dużej przestrzeni 4 GB” w XP Pro) .. użycie „brakującej” .75 GB jako części „pamięci wirtualnej” może przyspieszyć system ...
Pamiętaj, że przełącznik / 3G może umożliwiać 32-bitowym aplikacjom dostęp do 3Gb w 32-bitowym systemie operacyjnym (jeśli mają flagę LargeAddressAware w nagłówku .exe - w takim przypadku mogą uzyskać dostęp do 4 Gb w 64-bitowym systemie operacyjnym), ale na XP musisz również podać / USERVA, aby system operacyjny nie został „wyciśnięty” z pamięci RAM :-)
źródło
Jeśli chcesz skorzystać z pełnego 4 GB, jedyną opcją jest uaktualnienie do 64-bitowego systemu operacyjnego:
Normalny system Windows XP ma tylko 32 bity, co ogranicza pamięć do maks. 3,5 GB. Sprawdź link opublikowany przez VonC, aby uzyskać szczegółowe informacje na ten temat.
źródło
Jeśli używasz zintegrowanej grafiki, możesz to wyłączyć, a to oznacza, że system będzie w stanie zająć się większą ilością pamięci RAM systemu.
Ale najlepszym rozwiązaniem jest na pewno uzyskanie systemu operacyjnego x64.
W każdym razie nie bez powodu. Większość programów działa w wersji x64 z XP / Vista / 7 z warstwą emulacji x86. Problemem mogą być tylko sterowniki .
źródło
Jest to dość skomplikowane pytanie, ponieważ wymaga kilku składników. Te elementy to:
Ostatni element nie dotyczy bezpośrednio problemu, ale dodałem go ze względu na kompletność.
W skrócie, wszystkie powyższe składniki muszą obsługiwać ponad 4 GB pamięci, aby odnieść sukces.
Jednostka centralna
Zacznijmy od procesora. Ale najpierw należy zauważyć, że procesor nie ma żadnej magicznej zdolności do korzystania z żadnej pamięci . Zamiast tego może po prostu uzyskać dostęp do dowolnego adresu w swojej przestrzeni adresowej . Teraz nadchodzi bitness. 32-bitowy procesor może uzyskiwać dostęp do adresów w zakresie od 0 do 4 GiB. Zakres ten musi jednak uwzględniać nie tylko dostępną pamięć RAM, ROM, SMRAM , tabelę mapowania adresów graficznych, ale także wszystkie wymagane we / wy mapowane w pamięcii wiele innych, które mogą wymagać znacznej części tego zakresu adresów. W rezultacie może być całkowicie możliwe, że niektóre adresy pamięci zostały zacienione przez te zastosowania i dlatego nie są dostępne dla operacji na pamięci RAM. Aby odzyskać ukrytą pamięć, konieczne jest rozszerzenie przestrzeni adresowej dostępnej dla procesora . W przypadku 32-bitowego procesora rozszerzenie adresu fizycznego może pomóc. Co pozwala na adresowanie do 64 GiB. 64-bitowy procesor działający w natywnym trybie 64-bitowym ma domyślnie dostępdo 16 EiB, który jest raczej ogromny i nie wymaga takich sztuczek. Ale z drugiej strony 64-bitowy procesor nie może używać adresowania 64-bitowego, więc w rzeczywistości są one nadal ograniczone przez szynę adresową do mniejszego zakresu niż 16 EiB.
Jednostka kontrolera pamięci
Początkowo znajdował się w Northbridge , ale został przeniesiony na matrycę procesora przez AMD, zaczynając od procesorów AMD64 i przez Intel z procesorami Nehalem. Nawet jeśli procesor z PAE może sam uzyskać dostęp do 64 GiB, nadal potrzebuje MCU, aby uzyskać dostęp do pamięci RAM. Mówiąc najprościej: procesor uzyskujący dostęp do określonego adresu otrzymuje odpowiedź z urządzenia PCI, pamięci ROM BIOS ROM lub MCU, jeśli żądany adres znajduje się w pamięci RAM i tak dalej. Nierzadko jednak MCU (czy to w mostku północnym, czy w CPU) obsługuje znacznie mniej miejsca adresowalnego niż 64 GiB, na przykład ze względów marketingowych.
BIOS / (U) EFI
BIOS / (U) EFI są również ważne, ponieważ ich obowiązkiem jest konfigurowanie sprzętu, zanim cokolwiek będzie mogło działać. Między innymi są odpowiedzialni za mapowanie całej przestrzeni adresowalnej procesora z zakresami pamięci urządzeń, magistrali, pamięci RAM i tak dalej. Co ciekawe, może się zdarzyć, że cała pamięć RAM zostanie podzielona na części i zmapowana w kilku dostępnych niesąsiadujących miejscach. Problem z BIOS-em polega na tym, że programiści mogą spodziewać się nie więcej niż 3 GiB użycia pamięci RAM w swoim systemie i dlatego BIOS nie będzie poprawnie mapował całej pamięci, która zostanie użyta. Najprawdopodobniej tak się nie stanie z (U) EFI.
System operacyjny
System operacyjny powinien również obsługiwać adresowanie ponad 4 GiB pamięci. Mówiąc ściślej, powinien skonfigurować procesor do korzystania z PAE. Niektóre 32-bitowe systemy operacyjne są w pełni zdolne do korzystania z PAE i uzyskiwania dostępu do więcej niż 4 GiB, inne mają ograniczenia programowe dotyczące maksymalnej pamięci, nawet jeśli umożliwiają PAE dla większego bezpieczeństwa (przykładem jest Windows XP). Po raz kolejny 64-bitowe systemy operacyjne oczywiście nie mają takich trudności i zwykle obsługują więcej niż 4 GiB pamięci.
Podanie
Ostatni punkt pochodzi z innego świata, ponieważ aplikacje zwykle działają w wirtualnej przestrzeni adresowej , dodałem ją ze względu na kompletność. Niemniej jednak podczas kompilacji wymaga kilku dodatkowych kroków, aby aplikacja mogła zużywać więcej pamięci. Domyślnie aplikacja 32-bitowa może korzystać tylko z 2 GiB pamięci. Ta sama 32-bitowa aplikacja może adresować do 4 GiB pamięci, pod warunkiem, że system operacyjny to obsługuje i ma włączony procesor PAE. Mówiąc dokładniej, mógłby skorzystaćdo 3 GiB pamięci, drugi 1 GiB byłby adresowalny jako wspólne biblioteki i jądro systemu operacyjnego, ale nie do zapisu (ostatecznie zależy to od architektury systemu operacyjnego, a nie samej aplikacji). Ponownie, 64-bitowe aplikacje natywnie obsługują adresowanie ponad 4 GiB pamięci i nie mają takich problemów w pierwszej kolejności.
Aby umieścić to wszystko w perspektywie, rozważmy kilka przykładów.
Zastanów się nad kontrolerem pamięci Intel® 82945G . Witryna firmy Intel stwierdza, że nie obsługuje PAE i jest ograniczona do 4 GB pamięci RAM. Pozwala zapoznać się z akapitem
9 System Address Map
arkusza danych. Ma wiele informacji. Najbardziej interesujące jestFigure 9-3. Main Memory Address Range
: i akapit9.2 Main Memory Address Range (1 MB to TOLUD)
, który brzmi następująco:Jak mówi, ponieważ nie obsługuje PAE, ostatecznie nie jest w stanie ponownie mapować PCI i każdego innego MMIO powyżej 4 GiB, dlatego część pamięci zostanie zacieniona i nieużywana. Co oznacza, że nawet jeśli jest używany z procesorem obsługującym adresowanie 36-bitowe, pamięć powyżej 4 GiB będzie nadal niedostępna, a część pamięci zbliżona do limitu 4 GiB również nie będzie używana.
Odwrotnie, rozważmy kontroler pamięci Intel® 82955X , który jest powiązany z poprzednim, ale ma on obsługiwać 8 GB w przeciwieństwie do poprzedniego! Paragraf arkusza danych
2.1 Host Interface Signals
sugeruje, że wykorzystuje on 36-bitową magistralę adresową do procesora, co jest dobrym znakiem. Akapit7 System Address Map
zawiera dodatkowe informacje. PorównajFigure 7-1. System Address Ranges
z tym, który widzieliśmy wcześniej: To wyraźnie sugeruje, że jest w stanie wykorzystać więcej niż 4 GiB pamięci RAM, pod warunkiem, że jest używany z procesorem również zdolnym do adresowania 36-bitowego. Warto również zauważyć, że akapit to7 System Address Map
stwierdzaMCH supports 64 GB of addressable memory space
. Jednak wyjaśniono dalej, że maksymalna użyteczna pamięć RAM jest ograniczona do 8 GB. To po raz kolejny deklaruje różnicę między adresowalnym aużyteczny, ponieważ próbowałem przekazać w sekcji CPU.Podsumowując, chciałbym zauważyć, że dwa pokrewne układy mają w rzeczywistości ogromną różnicę w obsłudze pamięci.
Sprawdźmy procesor Intel® Pentium® Extreme Edition 840 . Obsługuje 64-bitowy zestaw instrukcji, ale nie obsługuje PAE. Co oznacza, że jeśli działa w trybie 32-bitowym, nie będzie w stanie użyć więcej niż 4 GiB pamięci RAM (proszę popraw mnie, jeśli się mylę z tym założeniem). Pozwala sprawdzić arkusz danych i tabelę
Table 4-3. Signal Description
. Mimo że ten procesor jest zdolny do obsługi 64-bitów, nadal jest ograniczony przez swoją szynę adresową o szerokości 36-bitów, ograniczając go do dostępnego zakresu adresów od 0 do 64 GiB.Teraz sprawdźmy nowszy procesor. Weźmy na przykład procesor Intel® Core ™ i7-7700 . Jest reklamowany do obsługi do 64 GB pamięci RAM. Teraz sprawdźmy jego arkusz danych. Akapit
2.3 System Address Map
przekonuje nas, że zakres adresowalny tego procesora wynosi od 0 do 512 GiB z powodu 39-bitowej magistrali adresowej. Zauważ, że wciąż jest daleko od teoretycznego zakresu 16 EiB dla 64-bitowego procesora. Zaskakujące jest to, że dodatkowo wyjaśnia, że ten procesor obsługuje maksymalnie 32 GiB użytecznej pamięci RAM (w przeciwieństwie do 64 GB na stronie internetowej). Istnieje również interesujący obrazFigure 2-2. System Address Range Example
: wykonuje dobrą robotę ilustrując problem z cieniowaniem pamięci przez urządzenia PCI itp. Sugeruje również sposób przezwyciężenia tego problemu poprzez mapowaniezakres od rzeczywistej pamięci RAM do górnego zakresu adresów w zakresie adresowalnym przez CPU . W ten sposób odzyskujesz tę ukrytą pamięć do użytku. Zauważ, że to ponowne mapowanie jest wykonywane przez BIOS / (U) EFI przy inicjalizacji sprzętowej i właśnie z tego powodu umieściłem BIOS / (U) EFI na powyższej liście punktowej.Wziąłem produkty Intela jako przykłady, ale to samo dotyczy AMD.
Teraz porozmawiajmy o zaangażowaniu systemów operacyjnych. Jądro Linux zawiera pełną obsługę trybu PAE, poczynając od wersji 2.3.23, i jest możliwe, że w systemie 32-bitowym można używać więcej niż 4 GiB pamięci z jądrem Linux. Należy jednak pamiętać o nieokreślonym problemie z 32-bitowym jądrem Linuksa w systemie z więcej niż 4 GiB pamięci RAM na niektórych urządzeniach (z mojego doświadczenia wynika, że ma to coś wspólnego ze strzelaniem do TLB). W każdym razie Wikipedia ma dobre informacje na temat obsługi PAE . Interesujące jest to, jak Windows XP jest ograniczony do 4 GB, podczas gdy Windows Server 2003 Enterprise / Datacenter SP2 jest w stanie uzyskać pełne 64 GB. To samo dotyczy innych par Windows-Desktop.
Jak widać, istnieje wiele kombinacji między wymienionymi komponentami, aw niektórych przypadkach może pomóc wymiana procesora lub systemu operacyjnego. Znacznie trudniej jest poradzić sobie z BIOS / (U) EFI lub MCU, ponieważ ten pierwszy jest zastrzeżony i wbudowany w system i nie jest łatwy do modyfikacji, ten drugi jest wbudowany w procesor lub lutowany na płycie.
źródło
pokazuje 3574 MB pamięci RAM, ponieważ tyle pamięci RAM jest DARMOWE i dostępne dla komputera w dowolnym momencie. Ta liczba to pamięć RAM, do której komputer ma pełny dostęp, ponieważ programy i ustawienia wstępnie zainstalowane na komputerze używają określonej ilości pamięci RAM, która w twoim przypadku wynosi 426 MB. Mój 6 GB 64-bitowy komputer pokazuje 5,8 GB dostępnej pamięci RAM, a nie pełne 6 GB. Najlepszym rozwiązaniem byłoby uaktualnienie komputera
źródło