Pamięć wirtualna w systemie operacyjnym: co to jest, stronicowanie na żądanie, zalety
⚡ Inteligentne podsumowanie
Pamięć wirtualna to mechanizm pamięci masowej, który daje użytkownikowi iluzję dużej pamięci głównej, traktując część pamięci dodatkowej jako pamięć RAM. Umożliwia on uruchamianie procesów większych niż pamięć fizyczna i jest realizowany za pomocą stronicowania na żądanie.

Co to jest pamięć wirtualna?
Pamięć wirtualna To mechanizm pamięci masowej, który oferuje użytkownikowi iluzję posiadania bardzo dużej pamięci głównej. Osiąga się to poprzez traktowanie części pamięci pomocniczej jako pamięci głównej. W pamięci wirtualnej użytkownik może przechowywać procesy o rozmiarze większym niż dostępna pamięć główna.
Dlatego zamiast ładować jeden długi proces do pamięci głównej, system operacyjny ładuje różne części więcej niż jednego procesu do pamięci głównej. Pamięć wirtualna jest najczęściej wdrażana za pomocą stronicowania popytu i segmentacji popytu.
Dlaczego potrzebujesz pamięci wirtualnej?
Oto powody korzystania z pamięci wirtualnej:
- Jeśli komputer nie ma wolnej pamięci fizycznej, zapisuje potrzebne dane na dysku twardym w pliku wymiany jako pamięć wirtualną.
- Jeśli komputer działa Windows potrzebuje więcej pamięci/RAM niż jest zainstalowane w systemie, wykorzystuje w tym celu niewielką część dysku twardego.
Jak działa pamięć wirtualna?
We współczesnym świecie pamięć wirtualna stała się dość powszechna. Jest wykorzystywana zawsze wtedy, gdy niektóre strony wymagają załadowania do pamięci operacyjnej w celu wykonania, a pamięć nie jest dostępna dla tych wielu stron.
W takim przypadku zamiast uniemożliwiać stronom przedostawanie się do pamięci głównej, system operacyjny wyszukuje przestrzeń pamięci RAM, która była ostatnio minimalnie używana lub do której nie odwoływano się, i przenosi ją do pamięci pomocniczej, aby zrobić miejsce dla nowych stron w pamięci głównej.
Pozwól nam zrozumieć zarządzanie pamięcią wirtualną za pomocą jednego przykładu.
Na przykład
Załóżmy, że system operacyjny wymaga 300 MB pamięci do przechowywania wszystkich uruchomionych programów. Jednak obecnie w pamięci RAM dostępnych jest tylko 50 MB pamięci fizycznej.
- Następnie system operacyjny skonfiguruje 250 MB pamięci wirtualnej i użyje programu o nazwie Menedżer pamięci wirtualnej (VMM) do zarządzania tymi 250 MB.
- W tym przypadku VMM utworzy na dysku twardym plik o rozmiarze 250 MB, w którym zostanie zapisana wymagana dodatkowa pamięć.
- System operacyjny będzie teraz adresował pamięć tak, jakby uważał 300 MB rzeczywistej pamięci zapisanej w pamięci RAM, nawet jeśli dostępne jest tylko 50 MB.
- Zadaniem VMM jest zarządzanie 300 MB pamięci, nawet jeśli dostępnych jest zaledwie 50 MB rzeczywistej przestrzeni pamięci.
Co to jest stronicowanie popytu?
Mechanizm stronicowania na żądanie jest bardzo podobny do mechanizmu stronicowania na żądanie system stronicowania z wymianąping, w którym procesy są przechowywane w pamięci podrzędnej, a strony są ładowane tylko na żądanie, a nie z wyprzedzeniem.
Zatem w przypadku przełączenia kontekstu system operacyjny nigdy nie kopiuje żadnych stron starego programu z dysku ani żadnych stron nowego programu do pamięci głównej. Zamiast tego rozpoczyna wykonywanie nowego programu po załadowaniu pierwszej strony i pobiera strony programu, do których się odwołuje.
Jeśli podczas wykonywania programu program odwołuje się do strony, która może być niedostępna w pamięci głównej, ponieważ została zamieniona, procesor uznaje to za nieprawidłowe odwołanie do pamięci. Dzieje się tak, ponieważ błąd strony przekazuje sterowanie z powrotem z programu do systemu operacyjnego, który żąda ponownego zapisania strony w pamięci.
Rodzaje metod zastępowania stron
Oto kilka ważnych metod zamiany stron:
- FIFO
- Optymalny algorytm
- Wymiana strony LRU
Wymiana strony FIFO
FIFO (First-in-first-out) to prosta metoda wdrożenia. W tej metodzie pamięć wybiera do zastąpienia stronę, która najdłużej znajdowała się pod wirtualnym adresem pamięci.
Udogodnienia
- Za każdym razem, gdy ładowana jest nowa strona, strona, która najdłużej znajdowała się w pamięci, jest usuwana. Dzięki temu łatwo zdecydować, którą stronę usunąć, ponieważ jej numer identyfikacyjny zawsze znajduje się na początku stosu FIFO.
- Najstarsza strona w pamięci głównej jest tą, która powinna zostać wybrana do zastąpienia jako pierwsza.
Optymalny algorytm
Optymalna metoda zamiany strony polega na wybraniu tej strony do zamiany, dla której czas do kolejnego odwołania jest najdłuższy.
Udogodnienia
- Algorytm Optimal generuje najmniejszą liczbę błędów stronicowania. Ten algorytm jest trudny do wdrożenia.
- Optymalny algorytm zastępowania stron ma najniższy wskaźnik błędów stron spośród wszystkich algorytmów. Taki algorytm istnieje i powinien być nazywany MIN lub OPT.
- Zastąp stronę, która prawdopodobnie nie będzie używana przez dłuższy czas. Używaj tylko czasu, w którym strona jest potrzebna.
Wymiana strony LRU
Pełna nazwa LRU to Least Recently Used Page (strona ostatnio używana). Ta metoda pomaga systemowi operacyjnemu określić wykorzystanie strony w krótkim okresie czasu. Ten algorytm powinien być implementowany poprzez powiązanie licznika z każdą stroną.
Jak to działa?
- Do zastąpienia zostanie wybrana strona, która przez dłuższy czas nie była używana w pamięci głównej.
- Łatwe do wdrożenia, prowadź listę, zastępuj strony, patrząc wstecz.
Udogodnienia
- Metoda zastępowania LRU ma najwyższą wartość. Ten licznik jest również nazywany rejestrem starzenia, który określa wiek i częstotliwość odwoływania się do powiązanych stron.
- Do zastąpienia należy wybrać tę stronę, która przez dłuższy czas nie była używana w pamięci głównej.
- Prowadzi także listę i zastępuje strony, patrząc wstecz.
Wskaźnik usterek
Współczynnik awaryjności to częstotliwość, z jaką projektowany system lub komponent ulega awariom. Jest on wyrażany w liczbie awarii na jednostkę czasu. Oznacza się go grecką literą λ (lambda).
Zalety pamięci wirtualnej
Oto zalety i korzyści wynikające ze stosowania pamięci wirtualnej:
- Pamięć wirtualna pomaga przyspieszyć, gdy do wykonania programu potrzebny jest tylko określony segment programu.
- Jest bardzo pomocny we wdrażaniu środowiska wieloprogramowego.
- Pozwala na jednoczesne uruchomienie większej liczby aplikacji.
- Pomaga dopasować wiele dużych programów do mniejszych programów.
- Wspólne dane lub kod mogą być współdzielone między pamięciami.
- Proces może stać się większy niż cała pamięć fizyczna.
- Dane/kod należy odczytywać z dysku zawsze, gdy jest to wymagane.
- Kod można umieścić w dowolnym miejscu pamięci fizycznej bez konieczności przenoszenia.
- W pamięci głównej powinno być utrzymywanych więcej procesów, co zwiększa efektywne wykorzystanie procesora.
- Każda strona jest przechowywana na dysku do momentu, aż będzie potrzebna, po czym zostaje usunięta.
- Umożliwia jednoczesne uruchomienie większej liczby aplikacji.
- Nie ma określonego ograniczenia co do stopnia wieloprogramowości.
- Należy pisać duże programy, ponieważ dostępna przestrzeń adresów wirtualnych jest większa w porównaniu do pamięci fizycznej.
Wady pamięci wirtualnej
Oto wady/przeciwskazania związane z korzystaniem z pamięci wirtualnej:
- Aplikacje mogą działać wolniej, jeśli system korzysta z pamięci wirtualnej.
- Przełączanie się między aplikacjami prawdopodobnie zajmie więcej czasu.
- Oferuje Ci mniej miejsca na dysku twardym.
- Zmniejsza stabilność systemu.
- Umożliwia uruchamianie większych aplikacji w systemach, które nie oferują wystarczającej ilości fizycznej pamięci RAM do ich uruchomienia.
- Nie zapewnia takiej samej wydajności jak pamięć RAM.
- Ma to negatywny wpływ na ogólną wydajność systemu.
- Zajmuje przestrzeń dyskową, która może być wykorzystana do długoterminowego przechowywania danych.

