Pamięć fizyczna a systemy Windows

Pamięć fizyczna a systemy Windows

Autor: Arkadiusz Partyka

Opublikowano: 10/17/2010, 12:00 AM

Liczba odsłon: 78707

W latach 50 ubiegłego wieku, kiedy powstał pierwszy komputer posiadający pra-pamięć RAM (ang. Random Access Memory), jego twórcy jak i użytkownicy, nie borykali się z problemem maksymalnej ilości pamięci obsługiwanej przez system, czy też z faktem, że "przydałoby się więcej RAM-u do zwiększenia wydajności". Tak też było przez wiele kolejnych dekad, do czasu microsoftowej rewolucji na rynku oprogramowania oraz do czasu upowszechnienia się znanych już wszystkim modułów DIMM. Pamięć operacyjna jest jednym z podstawowych zasobów komputera, na którym przechowywane są tymczasowe dane. Od samej jej ilości nie zależy wydajność komputera, gdyż bardzo istotne są również parametry jej pracy. Cóż, wydawać by się mogło, że wystarczy wyposażyć komputer w dużą ilość pamięci o wyśrubowanych parametrach. Nic bardziej mylnego! Upowszechniona architektura od lat 90 nie pozwala na obsługę znacznych ilości RAM-u. Zapewne wielu użytkowników spotkało się z problemem, że ich system Microsoft Windows wykrywał mniej pamięci, niż posiadana w komputerze. Czemu tak się dzieje? Czy jest na to jakaś rada?

Owszem, wystarczy nabyć jeden z 64-bitowych systemów, albo nawet Windows Server, który swobodnie na architekturze 32-bitowej obsłuży do 128GB pamięci RAM! Niewiarygodne? Przedstawimy mechanizmy, jakie rządzą pamięciami RAM, mechanizmy, które wbudowane zostały w systemy spod logo Microsoftu.

Adresacja pamięci

Pamięci operacyjne to bardzo złożone elektroniczne układy, może nie tak jak jednostki CPU czy GPU, ale także zasługują na uwagę w strukturze komputera. To przecież dzięki nim, nasze PC-ety - mówiąc kolokwialnie - działają. Od chwili, kiedy system operacyjny jest uruchamiany, jego najważniejsze elementy są przenoszone do pamięci operacyjnej i przez cały czas w niej przetrzymywane, a tylko po to, abyśmy mogli komfortowo pracować na komputerze. W tym miejscu trzeba więc wspomnieć o tak zwanej pamięci wirtualnej, przydatnej w mniejszym bądź większym stopniu, gdy posiadana pamięć fizyczna jest niewystarczająca.

Jeśli więc pamięć operacyjna jest bardzo istotnym elementem, odgrywającym ważną rolę w pracy systemu, poznajmy w jaki sposób systemy Windows radzą sobie z jej obsługą. Przyda nam się trochę matematyki, aby zrozumieć wszystkie aspekty. Architektura x86, czyli 32-bitowa, fizycznie pozwala na zaadresowanie 2 do 32 potęgi pamięci RAM. Przeliczając jest to dokładnie 4GB. W przypadku architektury x64 - 64-bitowej - jest to już 16TB.
Zarówno 32-bitowe systemy Windows XP, Vista, czy Windows 7 - potrafią obsłużyć 4GB operacyjnej pamięci, aczkolwiek niektóre z edycji serwerowych propozycji Microsoftu, bez problemu radzą sobie z rozmiarami aż 128GB.

Przeanalizujemy w jaki sposób system operacyjny zarządza pamięcią RAM, aby móc później zrozumieć mechanizmy adresujące różne rozmiary pamięci. Aby system Windows potrafił precyzyjnie wskazać miejsce zapisu lub odczytu danych, cały obszar pamięci został podzielony na bloki, z których każdy posiada swój fizyczny adres. Najwyższy adres jest uzależniony od wspomnianej architektury. Każdy komponent komputera za pomocą adresacji odwołuje się do odpowiednich komórek pamięci. Dostęp do takich komponentów musi być zapewniony dla każdego procesora, niezależnie od systemu operacyjnego. Założono zatem takie rozwiązanie, w którym chipsety płyt głównych mapują pamięć komponentów na adresy fizyczne od największego, czyli od 0xFFFFFFFF w dół – tyle, ile jest wymagane. Jednocześnie zadeklarowany w ten sposób obszar adresów fizycznych przestaje być dostępny w pamięci RAM, a tym samym Windows musi brać pod uwagę to, że w każdej chwili może nastąpić bezpośrednie odwołanie do tego zakresu adresów, co realizowane jest przez tak zwane DMA (ang. Direct Memory Access). DMA to technika, dzięki której inne urządzenia (np. karta sieciowa, dźwiękowa) mogą używać pamięci operacyjnej przy pominięciu procesora. W 1997 roku Intel wyprodukował procesor Pentium Pro, który posiadał tzw. tryb PAE (ang. Physical Address Extension), czyli sposób na powiększenie zakresu adresacji pamięci fizycznej. Polegało to na dodaniu 4 bitów w adresie i jednocześnie umożliwiło obsługę 64GB, jednakże ówczesne płyty główne nie były jeszcze na to przygotowane. Z metodą PAE związany jest także mechanizm Windows DEP (ang. Data Execution Prevention), który zabezpiecza pamięć przed zapisaniem przez jakiś inny kod. Adresacja pamięci nie jest możliwa z dokładnością co do 1 bitu, ponieważ pamięć jest podzielona na tak zwane strony o rozmiarze 4kB każda. Kiedy powstały procesory Pentium II udostępniona została jednocześnie technologia PSE (ang. Page Size Extension), znana jako PSE-36. Polega ona na pracy z pojedynczymi stronami o rozmiarze 4MB zamiast 4kB. Pierwszym systemem, który obsługiwał PAE/PSE był Windows 2000, ale dziś obsługują je wszystkie 32-bitowe systemy firmy Microsoft.

Dlaczego tylko 4GB?

Zakup zbyt dużej ilości pamięci może okazać się bezsensowny, gdyż nie będziemy w stanie jej wykorzystać. Mało używany już Windows 98 pomimo iż był systemem 32-bitowym, potrafił jedynie obsłużyć 768MB. Choć i z tym były czasem problemy. Jednakże w tamtych czasach zalecaną ilością pamięci dla Windows 98 było 32MB, więc i tak nikt się tym specjalnie nie przejmował. Najpopularniejsze 32-bitowe systemy operacyjne Microsoftu, takiej jak Windows XP czy Windows 7 obsługują opisywane już 4GB, chociaż teoretycznie mogłyby obsłużyć aż 128 GB, podobnie jak Windows Server w edycji Datacenter.
Dlaczego tak się dzieje? Ilość obsługiwanej pamięci została sztucznie ograniczona, ze względu na zapewnienie największej niezawodności oraz stabilności, tak więc 4GB to najwyższy dostępny rozmiar, jaki może zostać zaadresowany w standardzie x86. Wspomniane 4GB są dzielone przez system na dwie równe części. Pierwsza przypada na aplikacje użytkownika, natomiast pozostałe 2GB przydzielane są systemowi. Z czego 960MB zajmuje baza danych PFN i pozostaje tylko 1GB dla map jądra oraz struktur danych systemu. Opisaną strukturę świetnie przedstawia poniższy wykres.

Wykres zagospodarowania pamięci RAM w systemach Windows

Z kolei w Windows Server 2003 wprowadzono duże zmiany już na poziomie jądra. Inaczej ograniczono np. wielkość pamięci czy rejestr, co spowodowało poprawienie stabilności całego systemu. W poprzednich latach użytkownikom komputerów nie było potrzebne więcej niż 4GB. Ilość ta była wystarczająca do korzystania ze wszystkich dostępnych na rynku gier oraz programów komputerowych. W dzisiejszych czasach komputery z 4GB pamięci i więcej, są na porządku dziennym, gdyż do obsługiwania profesjonalnych programów graficznych czy też przy obróbce wideo w wysokiej rozdzielczości, niekiedy potrzeba więcej niż 4GB. W momencie, kiedy posiadamy 1GB RAM-u sam system Windows 7 "na starcie" pobiera około 440MB, jednakże jeśli komputer wyposażony jest w większe ilości RAM-u np. 4GB, system zapisze około 710MB danych w pamięci, aby zapewnić większą wydajność. Tak więc widzimy, że Windows 7 zmiennie wykorzystuje znaczne ilości pamięci. Dlatego też jeden z poprzedników - system Windows XP z dodatkiem Service Pack 2 był pierwszym systemem teoretycznie obsługującym więcej niż 4GB pamięci. Jednakże w praktyce wyglądało to inaczej. Wszelkie dostępne sterowniki, zwłaszcza audio i wideo, oraz inne programy nie potrafiły adresować większych ilości pamięci niż 4GB, dlatego też nie było możliwości wykorzystania większej dostępnej ilości RAM-u.

Dziś producenci sprzętu komputerowego dostarczają sterowniki pod systemy 32- jak i 64-bitowe, które są w stanie wykorzystać adresy powyżej 4GB. Systemy z rodziny Microsoft Windows Server, zarówno z roku 2003 jak i 2008, umożliwiają obsługę znacznie większej ilości pamięci operacyjnej, niż wspomniany system Windows XP. Oczywiście, mówimy tutaj o systemach 32-bitowych, ponieważ w przypadku systemów opracowanych na architekturę x64, obsługa dużych rozmiarów pamięci RAM jest na porządku dziennym. Wydawać by się mogło, że zarówno Windows Server 2003 jak i Windows XP w wersji 32-bitowej są w stanie zaadresować zaledwie 4GB pamięci operacyjnej. Gigant z Redmond dla systemów serwerowych przygotował zupełnie inne mechanizmy obsługi pamięci o dostępie swobodnym, niż dla systemów przeznaczonych dla użytkowników domowych.

Czy na pewno więcej niż 4GB?

Wspomnieliśmy, że systemy Windows z rodziny Server potrafią obsłużyć duże ilości pamięci RAM, znacznie przewyższające 4GB. Oczywiście dzieje się tak za sprawą omawianego wcześniej mechanizmu, którego zadaniem jest „sprytne” zarządzanie znacznymi wielkościami RAM-u. Mówiąc w skrócie, działanie tego modułu opiera się na przełączaniu się pomiędzy poszczególnymi blokami zaadresowanej pamięci operacyjnej. Taka zasada przydzielania podręcznej pamięci nie jest jednak znana od wczoraj. Bowiem już w pierwszych mikrokontrolerach spod znaku Intela, obsługa rejestrów roboczych polegała na przełączaniu się pomiędzy ich grupami. Przykładowo mikrokontroler 8051 posiadał 32 rejestry robocze, jednak w danej chwili możliwy był dostęp do 8 wybranych. W momencie, gdy potrzebowaliśmy użyć kolejnych, zmienialiśmy konfigurację rejestrów, aby móc korzystać z kolejnej ósemki. W dużym uproszczeniu systemy 32-bitowe z rodziny Windows Server tak zarządzają pamięcią RAM, i dzięki temu właśnie potrafią zaadresować znacznie więcej niż 4GB.

Pamięć a użytkownik

Wiemy jak systemy Windows zarządzają pamięcią RAM, dowiedzmy się jeszcze w jaki sposób my - użytkownicy - możemy monitorować pracę RAM-u.

W systemowym Menedżerze zadań Windows, w zakładce Wydajność możemy kontrolować zużycie pamięci w danej chwili. Jeżeli zaraz po zainstalowaniu systemu operacyjnego, sięga ono 80-100%, jest to alarmujący sygnał do nabycia większej ilości RAM-u.

Menedżer zadań Windows

Innym sposobem na kontrolowanie zużycia pamięci jest skorzystania z narzędzia Monitor niezawodności i wydajności. Jest on dostępny w Panelu sterowania w grupie Narzędzia administracyjne. Oprócz kontroli RAM-u dodatkowo możemy monitorować pracę procesora, dysku twardego czy sieci.

Trzecim, a zarazem bardziej profesjonalnym narzędziem do monitorowania pamięci jest MemInfo. Program ten szczegółowo pokazuje dane dotyczące RAM-u, takie jak:

  • zakres pamięci fizycznej (czyli dokładnie od jakiego do jakiego adresu występuje dany obszar),
  • ilość stron (stronicowanie polega na wyróżnieniu bloków pamięci, czyli stron od ang. pages – o określonej wielkości - 4kB każda),
  • pojemność.

MemInfo w Wierszu polecenia

Tak więc jak już wspomnieliśmy, systemy 32-bitowe standardowo obsługują 4GB, a systemy 64-bitowe 16TB RAM-u. Jeżeli w przyszłości okaże się, że dostępna obecnie ilość pamięci RAM jest niewystarczająca, to problem ten prawdopodobnie zostanie rozwiązany, ponieważ producenci pracują już nad procesorami 128-bitowymi, które będą w stanie obsługiwać gigantyczne ilości pamięci. Są to na razie prototypy, gdyż do tej pory nawet procesory 64-bitowe nie są jeszcze w pełni wykorzystywane. Jednakże dziś, w sytuacji kiedy chcemy wyposażyć PC-ta w znaczne wielkości pamięci RAM, najlepszym i zapewne najtańszym wyborem będzie jedna z edycji systemu z rodziny Windows Vista lub Windows 7, przeznaczona na architekturę x64.

Wykaz systemów operacyjnych wraz z maksymalną ilością obsługiwanej pamięci

System operacyjny Edycja systemu Maksymalna obsługiwana wielkość
pamięci dla pojedynczej aplikacji
Maksymalna obsługiwana przez system
ilość pamięci RAM
Windows 2000 Professional 4GB 4GB
Server 4GB 4GB
Advanced Server 4GB 8GB
Datacenter Server 4GB 32GB - jeżeli sprzęt obsługuje tryb PAE
Windows XP Home 4GB 4GB
Professional 4GB 4GB
64-bit Edition 2003 16TB 128GB
Windows Server 2003 Standard 4GB 4GB
Web 4GB 2GB
Enterprise 4GB 32GB - jeżeli sprzęt obsługuje tryb PAE
Enterprise (64-bit) 16TB 64GB
Datacenter 4GB 128GB - jeżeli sprzęt obsługuje tryb PAE
Datacenter (64-bit) 16TB 512GB
Windows Server 2003 SP1 Standard 4 GB 4 GB
Web 4GB 2GB
Enterprise 4GB 64GB - jeżeli sprzęt obsługuje tryb PAE
Datacenter (64-bit) 16TB 1TB
Windows Vista 32-bit* 4GB 4GB
64-bit* 16TB 16TB
Windows 7 32-bit** 4GB 4GB
64-bit** 16TB 16TB

* - nie dotyczy wersji Starter oraz Home Basic.
** - nie dotyczy wersji Starter.

Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży
Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży

Wydarzenia