Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Oryginalny numer KB: 2160852
Podsumowanie
Ten artykuł zawiera podstawowe informacje na temat implementacji pamięci wirtualnej w 32-bitowych wersjach systemu Windows.
W nowoczesnych systemach operacyjnych, takich jak Windows, aplikacje i wiele procesów systemowych zawsze odwołują się do pamięci przy użyciu adresów pamięci wirtualnej. Adresy pamięci wirtualnej są automatycznie tłumaczone na rzeczywiste adresy (RAM) przez sprzęt. Tylko podstawowe części jądra systemu operacyjnego pomijają to tłumaczenie adresów i używają rzeczywistych adresów pamięci bezpośrednio.
Pamięć wirtualna jest zawsze używana, nawet jeśli pamięć wymagana przez wszystkie uruchomione procesy nie przekracza ilości pamięci RAM zainstalowanej w systemie.
Procesy i przestrzenie adresowe
Wszystkie procesy (na przykład pliki wykonywalne aplikacji), które działają w 32-bitowych wersjach systemu Windows, są przypisane adresy pamięci wirtualnej (przestrzeń adresowa wirtualna), od 0 do 4294 967 295 (2*32-1 = 4 GB), niezależnie od ilości pamięci RAM zainstalowanej na komputerze.
W domyślnej konfiguracji systemu Windows 2 gigabajty (GB) tej wirtualnej przestrzeni adresowej są wyznaczone do prywatnego użycia każdego procesu, a pozostałe 2 GB jest współużytkowane między wszystkimi procesami a systemem operacyjnym. Zazwyczaj aplikacje (na przykład Notatnik, Word, Excel i Acrobat Reader) używają tylko części 2 GB prywatnej przestrzeni adresowej. System operacyjny przypisuje ramki stron RAM tylko do tych stron pamięci wirtualnej, które są używane.
Rozszerzenie adresu fizycznego (PAE) to funkcja architektury intel 32-bitowej, która rozszerza adres pamięci fizycznej (RAM) na 36 bitów. Usługa PAE nie zmienia rozmiaru wirtualnej przestrzeni adresowej (która pozostaje na poziomie 4 GB), ale tylko ilość rzeczywistej pamięci RAM, którą można rozwiązać przez procesor.
Tłumaczenie między 32-bitowym adresem pamięci wirtualnej, który jest używany przez kod uruchomiony w procesie, a 36-bitowy adres RAM jest obsługiwany automatycznie i w sposób niewidoczny dla sprzętu komputera zgodnie z tabelami tłumaczenia obsługiwanymi przez system operacyjny. Dowolna strona pamięci wirtualnej (adres 32-bitowy) może być skojarzona z dowolną fizyczną stroną pamięci RAM (adres 36-bitowy).
Poniższa lista zawiera opis ilości pamięci RAM obsługiwanej przez różne wersje i wersje systemu Windows (od maja 2010 r.):
Wersja dla systemu Windows | Pamięć |
---|---|
Windows NT 4.0 | 4 GB |
Windows 2000 Professional | 4 GB |
Windows 2000 Standard Server | 4 GB |
Windows 2000 Advanced Server | 8 GB |
Windows 2000 Datacenter Server | 32 GB |
Windows XP Professional | 4 GB |
Windows Server 2003 Web Edition | 2 GB |
Windows Server 2003 Standard Edition | 4 GB |
Windows Server 2003 Enterprise Edition | 32 GB |
Windows Server 2003 Datacenter Edition | 64 GB |
Windows Vista | 4 GB |
Windows Server 2008 Standard | 4 GB |
Windows Server 2008 Enterprise | 64 GB |
Windows Server 2008 Datacenter | 64 GB |
Windows 7 | 4 GB |
Plik stronicowania
Pamięć RAM jest ograniczonym zasobem, natomiast w większości praktycznych pamięć wirtualna jest nieograniczona. Może istnieć wiele procesów, a każdy proces ma własne 2 GB prywatnej wirtualnej przestrzeni adresowej. Gdy pamięć używana przez wszystkie istniejące procesy przekracza dostępną pamięć RAM, system operacyjny przenosi strony (4 KB) jednej lub większej liczby wirtualnych przestrzeni adresowych na dysk twardy komputera. Zwalnia to ramkę ramową do innych zastosowań. W systemach Windows strony stronicowane są przechowywane w jednym lub kilku plikach (Pagefile.sys plików) w katalogu głównym partycji. W każdej partycji dysku może istnieć jeden taki plik. Lokalizacja i rozmiar pliku strony są skonfigurowane we właściwościach systemu (kliknij przycisk Zaawansowane, kliknij pozycję Wydajność, a następnie kliknij przycisk Ustawienia).
Użytkownicy często pytają , jak duży powinienem utworzyć plik stronicowania? Nie ma jednej odpowiedzi na to pytanie, ponieważ zależy od ilości zainstalowanej pamięci RAM i ilości pamięci wirtualnej wymaganej przez obciążenie. Jeśli nie ma innych dostępnych informacji, typowe zalecenie 1,5 razy zainstalowanej pamięci RAM jest dobrym punktem wyjścia. W systemach serwerowych zwykle chcesz mieć wystarczającą ilość pamięci RAM, aby nigdy nie brakuje pliku stronicowania i nie był używany. W tych systemach może nie służyć do obsługi dużego pliku stronicowania. Z drugiej strony, jeśli miejsce na dysku jest obfite, utrzymywanie dużego pliku stronicowania (na przykład 1,5 razy zainstalowanej pamięci RAM) nie powoduje problemu, a także eliminuje konieczność martwienia się o to, jak duży jest.
Wydajność, limity architektury i pamięć RAM
W każdym systemie komputerowym wraz ze wzrostem obciążenia (liczbą użytkowników, ilością pracy) wydajność spada, ale w sposób nieliniowy. Każdy wzrost obciążenia lub zapotrzebowania, poza pewnym punktem, powoduje znaczny spadek wydajności. Oznacza to, że niektóre zasoby są w krytycznym krótkim zakresie i stały się wąskim gardłem.
W pewnym momencie nie można zwiększyć zasobu, który jest w krótkim czasie. Oznacza to, że osiągnięto limit architektury. Niektóre często zgłaszane limity architektury w systemie Windows obejmują następujące elementy:
- 2 GB udostępnionej wirtualnej przestrzeni adresowej systemu (jądra)
- 2 GB prywatnej wirtualnej przestrzeni adresowej na proces (tryb użytkownika)
- 660 MB systemowego magazynu PTE (system Windows Server 2003 i starsze)
- 470 MB magazynu stronicowanej puli (system Windows Server 2003 i starsze)
- 256 MB magazynu niestronicowanej puli (system Windows Server 2003 i starsze)
Dotyczy to w szczególności systemu Windows Server 2003, ale może to dotyczyć także systemu Windows XP i Windows 2000. Jednak systemy Windows Vista, Windows Server 2008 i Windows 7 nie współużytkują tych limitów architektury. Limity pamięci użytkownika i jądra (liczby 1 i 2 w tym miejscu) są takie same, ale zasoby jądra, takie jak PTE i różne pule pamięci, są dynamiczne. Ta nowa funkcja umożliwia zarówno stronicowane, jak i niestronicowane pamięci. Dzięki temu elementy PTE i pula sesji mogą przekroczyć limity, które zostały omówione wcześniej, aż do punktu, w którym całe jądro jest wyczerpane.
Często spotykane i cytowane instrukcje, takie jak:
W przypadku serwera terminali 2 GB udostępnionej przestrzeni adresowej będzie całkowicie używane przed użyciem 4 GB pamięci RAM.
Może to być prawdą w niektórych przypadkach. Należy jednak monitorować system, aby wiedzieć, czy mają zastosowanie do określonego systemu, czy nie. W niektórych przypadkach te instrukcje są wnioskami z konkretnych środowisk systemu Windows NT 4.0 lub Windows 2000 i niekoniecznie mają zastosowanie do systemu Windows Server 2003. Wprowadzono istotne zmiany w systemie Windows Server 2003, aby zmniejszyć prawdopodobieństwo osiągnięcia tych limitów architektury w praktyce. Na przykład niektóre procesy, które znajdowały się w jądrze, zostały przeniesione do procesów innych niż jądra, aby zmniejszyć ilość pamięci używanej w udostępnionej wirtualnej przestrzeni adresowej.
Monitorowanie użycia pamięci RAM i pamięci wirtualnej
monitor wydajności jest podstawowym narzędziem do monitorowania wydajności systemu i identyfikowania lokalizacji wąskiego gardła. Aby rozpocząć monitor wydajności, kliknij przycisk Start, kliknij przycisk Panel sterowania, kliknij pozycję Narzędzia administracyjne, a następnie kliknij dwukrotnie monitor wydajności. Poniżej przedstawiono podsumowanie niektórych ważnych liczników i informacje o nich:
Pamięć, zatwierdzone bajty: ten licznik jest miarą zapotrzebowania na pamięć wirtualną.
Pokazuje to, ile bajtów zostało przydzielonych przez procesy i do których system operacyjny zobowiązał ramkę strony RAM lub miejsce strony w pliku stronicowania (lub być może oba). W miarę zwiększania się liczby zatwierdzonych bajtów niż dostępna pamięć RAM stronicowanie zwiększa się, a używany rozmiar pliku stronicowania również wzrośnie. W pewnym momencie działanie stronicowania zaczyna znacząco wpływać na wydajność.
Proces, zestaw roboczy, _Total: ten licznik jest miarą pamięci wirtualnej w aktywnym użyciu.
Ten licznik pokazuje, ile pamięci RAM jest wymagana, aby pamięć wirtualna używana dla wszystkich procesów była w pamięci RAM. Ta wartość jest zawsze wielokrotną 4096, czyli rozmiarem strony używanym w systemie Windows. Wraz ze wzrostem zapotrzebowania na pamięć wirtualną poza dostępną pamięcią RAM system operacyjny dostosowuje ilość pamięci wirtualnej procesu w zestawie roboczym, aby zoptymalizować dostępne użycie pamięci RAM i zminimalizować stronicowanie.
Plik stronicowania , %pagefile w użyciu: ten licznik jest miarą rzeczywistego użycia pliku stronicowania.
Użyj tego licznika, aby określić, czy plik stronicowania jest odpowiednim rozmiarem. Jeśli ten licznik osiągnie wartość 100, plik stronicowania jest pełny, a wszystko przestanie działać. W zależności od zmienności obciążenia prawdopodobnie potrzebujesz wystarczająco dużego pliku stronicowania, aby nie przekraczało 50–075 procent użycia. Jeśli większość pliku stronicowania jest używana, posiadanie więcej niż jednego na różnych dyskach fizycznych może zwiększyć wydajność.
Pamięć, strony/s: ten licznik jest jedną z najbardziej niezrozumianych miar.
Wysoka wartość tego licznika niekoniecznie oznacza, że wąskie gardło wydajności wynika z niedoboru pamięci RAM. System operacyjny używa systemu stronicowania do celów innych niż zamiana stron z powodu nadmiernego zobowiązania pamięci.
Pamięć, dane wyjściowe stron/s: ten licznik pokazuje, ile stron pamięci wirtualnej zostało zapisanych w pliku stronicowania, aby zwolnić ramki stron RAM dla innych celów.
Jest to najlepszy licznik do monitorowania, jeśli podejrzewasz, że stronicowanie jest wąskim gardłem wydajności. Nawet jeśli zatwierdzone bajty są większe niż zainstalowana pamięć RAM, jeśli dane wyjściowe/s stron są niskie lub zero przez większość czasu, nie ma znaczącego problemu z wydajnością z niewystarczającej ilości pamięci RAM.
Pamięć, bajty pamięci podręcznej, pamięć, niestronicowane bajty puli, pamięć, bajty stronicowane puli, pamięć, łączna liczba bajtów kodu systemu, pamięć, łączna liczba bajtów sterownika systemu:
Suma tych liczników jest miarą ilości 2 GB udostępnionej części wirtualnej przestrzeni adresowej 4 GB. Użyj tych elementów, aby określić, czy system osiąga jeden z omówionych wcześniej limitów architektury.
Pamięć, dostępne bajty MBytes: ten licznik mierzy ilość dostępnej pamięci RAM w celu zaspokojenia zapotrzebowania na pamięć wirtualną (nowych alokacji lub przywracania strony z pliku page).
Jeśli pamięć RAM jest w krótkim czasie (na przykład zatwierdzone bajty jest większa niż zainstalowana pamięć RAM), system operacyjny spróbuje zachować określony ułamek zainstalowanej pamięci RAM do natychmiastowego użycia przez skopiowanie stron pamięci wirtualnej, które nie są aktywne w użyciu do pliku stronicowania. W związku z tym ten licznik nie osiągnie zera i niekoniecznie jest dobrym wskazaniem, czy system brakuje pamięci RAM.