Temat ciągle powraca, a że ceny pamięci stały się niemal śmieszne, coraz więcej osób chciałaby sobie takie coś do kompa upchnąć. Po włączeniu kompa nagle okazuje się, że Windows raportuje np. 3,1GB RAM.
Pojawił się w końcu fajny artykulik na stronach supportu, który tąże kwestię wyjaśnia w końcu dość pożądnie. Przedstawię skót najważnieszych informacji dla leniuchów, którym nie chce się czytać:

  • nie jest to wina systemu operacyjnego
  • sytuacja odnosi się zarówno do wXP jak do Vista
  • wynika z kwestii sprzętowych i ograniczeń tak zwanego MMIO (memory-mapped I/O). Bardzo w skórcie polega to na tym, że wiele urządzeń ma/wykorzystuje własną pamięć – ot choćby karta graficzna. Procesor 32bit potrafi zaadresować tylko 2^32 adresów a więc robi rezerwację pamięci w obszaże <4GB. Adresy te są więc blokowane i niemożliwe do wykorzystania przez system
  • większość obecnie kupowanych procesorów jest x64 i spokojnie radzą sobie z takimi problemami. BIOS musi wspierać możliwość „memory remap feature”.
  • po instalacji SP1 dla vista w informacjach o systemie pojawi się wymarzone 4GB – nie zmienia to jednak w żaden sposób wykorzystania pamięci. Vista po prostu raportuje ilość RAM zainstalowaną w kompie a nie dostępną przez system.

Reasumując: chcesz móc korzystać z 4GB+? Musisz zainstalować system x64.

Jeśli zagląda tu jakaś osoba, która zna się na linuxach – teoretycznie całość jest opisywana jako kwestia sprzętowa (nie tylko na stronach Microsoft), co raportuje Linux a ile pamięci jest w stanie jest w stanie zaadresować kernel?
Pytanie wynika z faktu, że problem 4GB jest zawsze mitycznie łączony z Windowsem – czyżby Linux po prostu zawsze raportował ilość zainstalowanej pamięci, czy też ma jakiś sprytny sposób na obejście problemu – co byłoby dość poważnym policzkiem dla Windows…

-o((:: sprEad the l0ve ::))o-

Comments (18)

  1. jnx

    Odpowiedz

    Obsługuje 4 GB i powyżej a można to zrobić przez włączenie odpowiedniej opcji od obsługi 4gb+ ramu. Jeżeli nie ma tejże opcji to:
    1 – przez kompilację kernela (zaznaczasz w odpowiednim miejscu w konfiguratorze obsługę pamięci ponad 4GB)
    2 – jeśli dystrybucja ma to włączone w kernelu domyślnym – to już jest

  2. jnx

    Odpowiedz

    nexor,
    a jak wygląda opcja pod win obsługi dual channel np 2x2gb? skoro win widzi 3,1 gb tzn że dual channel nie jest obsługiwany mimo, że sprzętowo jak najbardziej jest?

  3. Odpowiedz

    no wlasnie dobry temat, kuzyn wlasnie chce dokupic 2GB zeby miec 4GB bo ma gre ktora wywala sie z braku ramu !!
    jakas niedorzecznosc ale tak niby jest

    sprawdze u niego i porownam

    u niego jest XP i VISTA 32bity :)

  4. Odpowiedz

    @jnx: wybracz, ale jakos nie zaliczam cię do guru linuxowych – czy ty w ogóle gdziekolwiek korzystasz z pingwina? (; informację weryfikowałem na kilq siteach i wszędzie odniesienie jest do ograniczeń sprzętowych. jeśli kernel linuxa jest w stanie obejść obsługę sprzętu i MMIO – to właśnie chciałbym jakiegoś linka z opisem że niby jak to możliwe. proszę o to najbardziej znany i popularny link dot. ograniczenia 4GB:
    http://www.codinghorror.com/blog/archives/000811.html
    i cytat:

    To be perfectly clear, this isn’t a Windows problem– it’s an x86 hardware problem. The memory hole is quite literally invisible to the CPU, no matter what 32-bit operating system you choose. The following diagram from Intel illustrates just where the memory hole is:
    [img]
    The proper solution to this whole conundrum is to use a 64-bit operating system. However, even with a 64-bit OS, you’ll still be at the mercy of your motherboard’s chipset and BIOS;

    jeśli chodzi o dual – ja sam szukam informacji na tematy sprzętowe bo to nie moja broszka. ale myśle, że nieco przeceniasz linuxa lub nie doceniasz windows [zależnie od punktu widzenia (;]

  5. jnx

    Odpowiedz

    nexor,
    akurat tym aspektem interesowałem się jakiś czas temu bo byłem ciekawy czy tak jest też w innych systemach.
    Na potwierdzenie
    32 bit Linux will happily address this much memory, if you have it. Often distributions designed for home use will artificially limit this though, since home systems generally do not ship with 64GB RAM. Or even over 4GB RAM. At least not yet. Also, many motherboards do not support the addressing mode required to get above 4GB physical memory (PAE)

  6. mwd

    Odpowiedz

    Ej, chwilunia, a co z PAE? Procek widzi 36-bitowe adresowanie, 32 bity mapowanego adresu, i dodatkowe 4 bity ofsetu. Jak OS potrafi gadać z PAE, to obsłuży do 64GB RAM, dając aplikacjom, które o PAE nic nie wiedzą 4GB mapowanej przestrzeni, z którego dla każdej wyrwie dziurę na mapowaną pamięć do sterowników i karty. Czyli aplikacje dostaną i tak około 3 giga z hakiem – po tyle dla każdej, aż RAMu starczy.

    Czyli można wrzucić sobie nawet więcej RAMu, i na OSie, który wspiera PAE – zadziała. Tylko nie na XPSP2, bo cudowni magicy z MS ograniczyli to HAL’em do 4GB.

    Linux daje radę – ale też aplikacja dostanie max 3GB RAMu do zabawy (nie wiem, czy per fork, czy inaczej – nie wgłębiałem się), tylko takich sporych aplikacji może być kilka, i wysycą tyle fizycznego RAMu ile im się da.

    Via: WHDC:PAE oraz Wiki:PAE.

  7. Odpowiedz

    @jnx: no ale masz tam podstwowe wyjasnienie:

    „You’re talking about physical address space, and that’s not a limitation of a particular architecture, it’s a computer limitation in general. An architecture with a physical address of 20 bits will address a total of 1 meg, unless you use external memory mapping hardware (most 8-bit micros of the Eighties could address 64k of memory; anything with more than 64k of RAM+ROM+MMIO needed external hardware to map or page memory — typically generating a whole range of other issues).”

  8. jnx

    Odpowiedz

    nexor:
    generalnie reasumując jest możliwe 4gb+ na linuxie (obojętnie jak to robi) – kolesie piszą że mają na 32 bitowym linuxie 4gb+ ramu bez problemu więc nie sądze by kłamali.
    na winxp nie slyszałem by ktoś miał 4gb+ ramu – nie wiem jak jest na Viscie.

  9. Odpowiedz

    @jnx: a tu się zgadza i masz pełną rację, ale to jest oddzielny temat. W systemach Microsoftu obsługę 4GB+ na systemach 32 mają tylko produkty serwerowe. Realizowane jest to przez PAE. systemy klienckie mają z oczywistych powodów ograniczenia – tak samo jak wersja standard ma ograniczenia w stosunku do enterprise (m.in właśnie na ilość obsługiwanej pamięci).
    pytanie jakie tu pada, i na które już na 98% znam odpowiedź to: czy mając 4GB pamięci, system (jakikolwiek) jest w stanie całe 4 wykorzystać.

  10. jnx

    Odpowiedz

    to podziel się tą 98% odpowiedzią;)
    Swoją drogą to troche skandal, że zwykły luser nie może mieć 4 gb pamięci a jak chce mieć to niech sobie kupi wersję serverową.

  11. Odpowiedz

    @jnx: dzielę się nią od kilq wpisów: jest to kwestia sprzętowa i dla systemu 32bit odpowiedź brzmi: „nie, nie może”.

    a co do skandalu – hmm… nikt nie zmusza do qpowania windy. poza tym polityka emesa jest dość konkretna – systemy 32bit schodzą do lamusa więc chcesz mieć więcej – zainstaluj x64. vista x64 od wersji business w zwyż obsługuje do 128GB więc powinno na jakiś czas być wystarczające dla najbardziej wymagających (; [najuboższy home ma limit 8GB – też sporo]

  12. jnx

    Odpowiedz

    ale co nie może dla 32 bitowych? win nie może czy w ogóle wszystkie systemy w 32 bitach nie mogą? Bo się trochę pogubiłem w tych „kwestiach sprzętowych”

  13. Odpowiedz

    lol. ale ty mącisz q:
    jeszcze raz zatem jak to wszystko rozumiem: żaden system 32bit, wyposażony w 4GB+ nie jest w stanie wykorzystać pełnej ilości ramu z powodu konieczności zaadresowania rezerwacji dla użądzeń PCI [tzw MMIO]. Dopiero funkcja 'memory remap’ oraz OS x64 dają do dyspozycji pełną ilość, udostępniając zarówno pełną wartość możliwych adresów pamięci (2^64) jak możliwość przekierowania adresów zarezerwowanych w wyższe adresy (memory remap) w obszary poza zakresem pamięci fizycznej.

    te 5% niepewności to nie wiem czy dobrze rozumiem, że pomimo PAE dostępnego w linuxie x32 (czyli możliwość adresowania do 64GB RAM) nie jest dostępna funkcjonalność memory remap – o ile dobrze doczytałem i zrozumiałem jest to już wewnętrzne ograniczenie procesorów x32, które nie są w stanie odwołać się do adresów z poza zakresu 2^32 (4GB). rezerwacje odbywają się „zanim jest system” a więc nie ma mowy o oszustwie w postaci softwareowego obejścia jakim jest PAE.

  14. jnx

    Odpowiedz

    no dobra to w myśl tego co napisałeś to 32 bitowy linux który wg userów obsługuje 4gb+ to jednak faktycznie nie obsługuje bo „żaden system 32bit, wyposażony w 4GB+ nie jest w stanie wykorzystać pełnej ilości ramu z powodu konieczności zaadresowania rezerwacji dla użądzeń PCI” ?
    Czyli jest ale nie ma? Już coraz mniej rozumiem ;)

  15. Odpowiedz

    tak.
    uściślając „[…]jednak fizycznie nie obsługuje[…]” – jednak fizycznie nie jest w stanie wykorzystać pełnej ilości, ponieważ część adresów z zakresu <4GB będzie zarezerwowane [czyt. zablokowane i nie do wykorzystania przez system]

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload CAPTCHA.