Pamięć stronicowania

Ferranti AtlasEdit

pierwszym komputerem obsługującym stronicowanie był superkomputer Atlas, opracowany wspólnie przez Ferranti, University of Manchester i Plessey w 1963 roku. Maszyna miała pamięć asocjacyjną (adresowalną) z jednym wpisem na każdą stronę 512 słów. Nadzorca obsługiwał przerwy w równoważności i zarządzał transferem stron między rdzeniem a bębnem w celu zapewnienia jednopoziomowego magazynu dla programów.

Microsoft WindowsEdit

Windows 3.x i Windows 9xedit

stronicowanie jest funkcją Microsoft Windows od Windows 3.0 w 1990 roku. Windows 3.x tworzy ukryty plik o nazwie 386SPART.PAR lub WIN386.SWP do użycia jako plik wymiany. Zwykle znajduje się w katalogu głównym, ale może pojawić się gdzie indziej (zazwyczaj w katalogu WINDOWS). Jego rozmiar zależy od tego, ile miejsca wymiany ma system (ustawienie wybrane przez użytkownika w Panelu sterowania → rozszerzone w sekcji “Pamięć wirtualna”). Jeśli użytkownik przeniesie lub usunie ten plik, przy następnym uruchomieniu systemu Windows pojawi się niebieski ekran z Komunikatem o błędzie “permanent swap file is corrupt”. Użytkownik zostanie poproszony o wybranie, czy usunąć plik (czy istnieje).

Windows 95, Windows 98 i Windows Me używają podobnego pliku, a ustawienia dla niego znajdują się w Panelu sterowania → System → Karta wydajność → pamięć wirtualna. System Windows automatycznie ustawia Rozmiar Pliku strony, aby zaczynał się od 1,5× rozmiaru pamięci fizycznej i w razie potrzeby rozszerzał do 3× pamięci fizycznej. Jeśli użytkownik uruchamia aplikacje wymagające dużej ilości pamięci w systemie o niskiej pamięci fizycznej, zaleca się ręczne ustawienie tych rozmiarów na wartość wyższą niż domyślna.

Windows NTEdit

plik używany do stronicowania w rodzinie Windows NT to pagefile.sys. Domyślna lokalizacja pliku strony znajduje się w katalogu głównym partycji, na której zainstalowany jest System Windows. System Windows można skonfigurować tak, aby używał wolnego miejsca na dowolnych dostępnych dyskach dla plików stron. Jest jednak wymagane dla partycji rozruchowej (tj., dysk zawierający katalog Windows), aby mieć na nim plik strony, jeśli system jest skonfigurowany do zapisu zrzutów jądra lub pełnej pamięci po niebieskim ekranie śmierci. System Windows używa pliku stronicowania jako tymczasowego magazynu dla zrzutu pamięci. Po ponownym uruchomieniu systemu Windows kopiuje zrzut pamięci z pliku strony do osobnego pliku i zwalnia miejsce, które zostało użyte w pliku strony.

Fragmentacjaedit

Ta sekcja wymaga aktualizacji. Pomóż zaktualizować ten artykuł, aby odzwierciedlić Ostatnie wydarzenia lub nowo dostępne informacje. (Lipiec 2014)

w domyślnej konfiguracji systemu Windows Plik strony może w razie potrzeby wykraczać poza początkową alokację. Jeśli dzieje się to stopniowo, może stać się mocno rozdrobnione, co może potencjalnie powodować problemy z wydajnością. Powszechną radą, aby tego uniknąć, jest ustawienie pojedynczego “zablokowanego” rozmiaru pliku strony, aby System Windows Go nie rozwijał. Jednak Plik strony rozszerza się tylko wtedy, gdy został wypełniony, co w domyślnej konfiguracji stanowi 150% całkowitej ilości pamięci fizycznej. W związku z tym całkowite zapotrzebowanie na pamięć wirtualną wspieraną przez pliki stron musi przekraczać 250% fizycznej pamięci komputera, zanim plik strony zostanie rozszerzony.

fragmentacja pliku strony, która występuje, gdy się rozszerza, jest tymczasowa. Gdy tylko rozszerzone regiony nie będą już używane (przy następnym restarcie, jeśli nie wcześniej), dodatkowe przydziały miejsca na dysku zostaną zwolnione, a Plik strony powróci do pierwotnego stanu.

blokowanie rozmiaru pliku strony może być problematyczne, jeśli aplikacja systemu Windows żąda więcej pamięci niż całkowity rozmiar pamięci fizycznej i Pliku strony, co prowadzi do błędnych żądań alokacji pamięci, co może spowodować awarię aplikacji i Procesów Systemowych. Ponadto plik strony jest rzadko czytany lub zapisywany w kolejności sekwencyjnej, więc zaleta wydajności posiadania całkowicie sekwencyjnego pliku strony jest minimalna. Jednak duży plik strony na ogół pozwala na korzystanie z aplikacji o dużej pamięci, bez żadnych kar poza wykorzystaniem większej ilości miejsca na dysku. Podczas gdy fragmentowany plik strony może nie być problemem sam w sobie, fragmentacja pliku strony o zmiennym rozmiarze z czasem utworzy kilka fragmentowanych bloków na dysku, powodując fragmentację innych plików. Z tego powodu, stały Rozmiar Pliku strony przylegającej jest lepszy, pod warunkiem, że przydzielony rozmiar jest wystarczająco duży, aby dostosować się do potrzeb wszystkich aplikacji.

wymagane miejsce na dysku może być łatwo przydzielone w systemach o nowszych specyfikacjach (np. system z 3 GB pamięci z plikiem strony o stałym rozmiarze 6 GB na dysku twardym o pojemności 750 GB lub system z 6 GB pamięci i plikiem strony o stałym rozmiarze 16 GB i 2 TB miejsca na dysku). W obu przykładach system zużywa około 0,8% miejsca na dysku przy wstępnie rozszerzonym pliku strony do maksimum.

Defragmentacja pliku strony jest również czasami zalecana w celu poprawy wydajności, gdy system Windows chronicznie zużywa znacznie więcej pamięci niż całkowita pamięć fizyczna. Widok ten ignoruje fakt, że oprócz tymczasowych wyników rozbudowy, plik strony nie ulega fragmentacji w czasie. Ogólnie rzecz biorąc, problemy z wydajnością związane z dostępem do plików stron są znacznie skuteczniej rozwiązywane poprzez dodanie większej ilości fizycznej pamięci.

Systemy Unix i Unixopodobneedit

Systemy Unix i inne Uniksopodobne systemy operacyjne używają terminu “swap”, aby opisać akt zastępowania miejsca na dysku dla pamięci RAM, gdy fizyczna PAMIĘĆ RAM jest pełna. W niektórych z tych systemów, to jest powszechne, aby poświęcić całą partycję dysku twardego do wymiany. Partycje te nazywane są partycjami swap. Wiele systemów ma cały dysk twardy dedykowany do wymiany, oddzielony od dysku (dysków) danych, zawierający tylko partycję wymiany. Dysk twardy przeznaczony do wymiany nazywa się “dyskiem wymiany” lub “dyskiem magazynującym” lub “dyskiem magazynującym”. Niektóre z tych systemów obsługują tylko zamianę na partycję wymiany; Inne również obsługują zamianę na pliki.

LinuxEdit

Zobacz: Partycje wymiany na dyskach SSD, zswap i zram

jądro Linuksa obsługuje praktycznie nieograniczoną liczbę backendów wymiany (urządzeń lub plików), a także obsługuje przypisywanie priorytetów backendów. Kiedy jądro zamienia strony z fizycznej pamięci, używa zaplecza o najwyższym priorytecie z dostępną wolną przestrzenią. Jeśli wielu backendom swapów przypisano ten sam priorytet, są one używane w sposób round-robin (który jest nieco podobny do układów pamięci RAID 0), zapewniając lepszą wydajność, o ile urządzenia bazowe mogą być wydajnie dostępne równolegle.

Zamień pliki i partycjeedit

z perspektywy użytkownika końcowego, zamień pliki w wersji 2.6.x i późniejsze jądra Linuksa są praktycznie tak szybkie jak partycje wymiany; ograniczenie polega na tym, że pliki wymiany powinny być przydzielane w ich bazowych systemach plików. Aby zwiększyć wydajność plików wymiany, jądro przechowuje mapę miejsca ich umieszczenia na urządzeniach bazowych i uzyskuje do nich bezpośredni dostęp, omijając w ten sposób pamięć podręczną i unikając obciążenia systemu plików. Niezależnie od tego, Red Hat zaleca użycie partycji wymiennych. W przypadku dysków twardych, które są obrotowymi nośnikami magnetycznymi, jedną z zalet korzystania z partycji wymiany jest możliwość umieszczenia ich na sąsiadujących obszarach HDD, które zapewniają większą przepustowość danych lub szybszy czas wyszukiwania. Jednak elastyczność administracyjna plików wymiany może przeważać nad pewnymi zaletami partycji wymiany. Na przykład plik wymiany można umieścić na dowolnym zamontowanym systemie plików, można go ustawić na dowolny żądany rozmiar i można go dodać lub zmienić w razie potrzeby. Partycje Swap nie są tak elastyczne; nie można ich powiększać bez użycia narzędzi do partycjonowania lub zarządzania woluminami, które wprowadzają różne zawiłości i potencjalne przestoje.

SwappinessEdit

Swappiness jest parametrem jądra Linuksa, który kontroluje względną wagę nadaną do wymiany pamięci uruchomieniowej, w przeciwieństwie do upuszczania stron z pamięci podręcznej strony systemowej, gdy żądanie alokacji pamięci nie może zostać spełnione z wolnej pamięci. Zamiana może być ustawiona na wartości od 0 do 200 (włącznie). Niska wartość powoduje, że jądro woli eksmitować strony z pamięci podręcznej stron, podczas gdy wyższa wartość powoduje, że jądro woli zamieniać “zimne” strony pamięci. Wartość domyślna to 60; ustawienie jej wyższej wartości może spowodować duże opóźnienie, jeśli zimne strony muszą być ponownie zamienione (na przykład podczas interakcji z programem, który był bezczynny), podczas gdy ustawienie niższej wartości (nawet 0) może spowodować duże opóźnienie, gdy pliki, które zostały usunięte z pamięci podręcznej, muszą być ponownie odczytane, ale sprawi, że interaktywne programy będą bardziej responsywne, ponieważ będą mniej prawdopodobne, że będą musiały zamienić zimne strony. Zamiana może również jeszcze bardziej spowolnić dyski twarde, ponieważ wiąże się z dużą ilością losowych zapisów, podczas gdy dyski SSD nie mają tego problemu. Z pewnością wartości domyślne działają dobrze w większości obciążeń, ale komputery stacjonarne i systemy interaktywne dla każdego oczekiwanego zadania mogą chcieć obniżyć ustawienie, podczas gdy przetwarzanie wsadowe i mniej interaktywne systemy mogą chcieć je zwiększyć.

Swap deathEdit

gdy pamięć systemowa jest niewystarczająca do wykonywania bieżących zadań, a duża część aktywności pamięci przechodzi przez powolną wymianę, system może stać się praktycznie niezdolny do wykonania żadnego zadania, nawet jeśli procesor jest bezczynny. Gdy każdy proces czeka na swap, System jest uważany za w swap śmierci.

Swap death może nastąpić z powodu nieprawidłowo skonfigurowanej nadmiernej pamięci.

oryginalny opis problemu “zamiana na śmierć”dotyczy serwera X. Jeśli kod lub dane używane przez serwer X do odpowiedzi na naciśnięcie klawisza nie są w pamięci głównej, to jeśli użytkownik wprowadzi naciśnięcie klawisza, serwer pobierze jedną lub więcej błędów stron, wymagając, aby te strony były odczytywane z swapu przed naciśnięciem klawisza, co spowalnia odpowiedź na nie. Jeśli te strony nie pozostaną w pamięci, będą musiały zostać ponownie uszkodzone, aby poradzić sobie z następnym naciśnięciem klawisza, dzięki czemu system praktycznie nie reaguje, nawet jeśli faktycznie wykonuje inne zadania normalnie.

macOSEdit

macOS używa wielu plików wymiany. Domyślna (i zalecana przez Apple) instalacja umieszcza je na partycji głównej, chociaż możliwe jest umieszczenie ich na oddzielnej partycji lub urządzeniu.

AmigaOS 4Edit

AmigaOS 4.0 wprowadził nowy system alokacji pamięci RAM i defragmentacji pamięci fizycznej. Nadal używa płaskiej współdzielonej przestrzeni adresowej, której nie można defragmentować. Opiera się na metodzie alokacji płyt i pamięci stronicowania, która umożliwia zamianę. Stronicowanie zostało zaimplementowane w AmigaOS 4.1, ale może zablokować system, jeśli cała pamięć fizyczna jest zużyta. Pamięć wymiany może być aktywowana i dezaktywowana w dowolnym momencie, umożliwiając użytkownikowi korzystanie tylko z fizycznej pamięci RAM.

Leave a Reply