Pamięć wirtualna w systemie operacyjnym: co to jest, stronicowanie na żądanie, zalety
Co to jest pamięć wirtualna?
Pamięć wirtualna to mechanizm przechowywania, który daje użytkownikowi złudzenie posiadania bardzo dużej pamięci głównej. Odbywa się to poprzez traktowanie części pamięci wtórnej 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, dla których warto używać pamięci wirtualnej:
- Jeśli w komputerze nie ma miejsca w pamięci fizycznej, zapisuje to, o czym musi pamiętać, na dysku twardym w pliku wymiany jako pamięć wirtualna.
- Jeśli komputer działa Windows potrzebuje więcej pamięci/RAM, to instalowany w systemie wykorzystuje do tego niewielką część dysku twardego.
Jak działa pamięć wirtualna?
We współczesnym świecie pamięć wirtualna stała się obecnie dość powszechna. Stosuje się go, gdy w celu wykonania niektóre strony wymagają załadowania do pamięci głównej, a pamięć nie jest dostępna dla tak dużej liczby stron.
Zatem w takim przypadku, zamiast zapobiegać wprowadzaniu stron do pamięci głównej, system operacyjny wyszukuje przestrzeń RAM, która jest ostatnio używana w minimalnym stopniu lub która nie jest odwoływana do pamięci dodatkowej, aby zwolnić miejsce na nowe strony w pamięć główna.
Rozumiemy 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 dostępnej pamięci fizycznej.
- Następnie system operacyjny utworzy 250 MB pamięci wirtualnej i użyje programu o nazwie Virtual Memory Manager (VMM) do zarządzania tymi 250 MB.
- Zatem w tym przypadku VMM utworzy na dysku twardym plik o rozmiarze 250 MB w celu przechowywania dodatkowej wymaganej pamięci.
- System operacyjny przejdzie teraz do adresowania pamięci, biorąc pod uwagę 300 MB rzeczywistej pamięci przechowywanej w pamięci RAM, nawet jeśli dostępne jest tylko 50 MB miejsca.
- Zadaniem VMM jest zarządzanie 300 MB pamięci, nawet jeśli dostępne jest tylko 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ą, gdzie procesy przechowywane w pamięci dodatkowej i strony są ładowane tylko na żądanie, a nie z wyprzedzeniem.
Tak więc, gdy nastąpi zmiana kontekstu, system operacyjny nigdy nie kopiuje żadnej strony starego programu z dysku ani żadnej strony nowego programu do pamięci głównej. Zamiast tego rozpocznie wykonywanie nowego programu po załadowaniu pierwszej strony i pobierze strony programu, do których się odwołuje.
Jeśli podczas wykonywania programu program odwołuje się do strony, która może nie być dostępna w pamięci głównej ze względu na jej zamianę, wówczas procesor traktuje to jako nieprawidłowe odwołanie do pamięci. Dzieje się tak dlatego, że błąd strony i transfery odsyłają kontrolę z programu do systemu operacyjnego, który żąda zapisania strony z powrotem w pamięci.
Rodzaje metod zastępowania stron
Oto kilka ważnych metod zastępowania 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.
Funkcje
- Za każdym razem, gdy ładowana jest nowa strona, ostatnio pojawiająca się w pamięci strona jest usuwana. Dzięki temu łatwo jest zdecydować, która strona wymaga usunięcia, ponieważ jej numer identyfikacyjny znajduje się zawsze na stosie FIFO.
- Do wymiany należy wybrać najstarszą stronę w pamięci głównej.
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.
Funkcje
- Optymalny algorytm skutkuje najmniejszą liczbą błędów strony. Algorytm ten jest trudny do wdrożenia.
- Optymalna metoda algorytmu zastępowania stron ma najniższy wskaźnik błędów stron ze wszystkich algorytmów. Ten algorytm istnieje i powinien być nazywany MIN lub OPT.
- Wymień stronę, która nie będzie używana przez dłuższy czas. Wykorzystuje tylko czas, kiedy strona musi zostać wykorzystana.
Wymiana strony LRU
Pełna forma LRU to strona Najrzadziej używana. Ta metoda pomaga systemowi operacyjnemu znaleźć użycie strony w krótkim czasie. Algorytm ten powinien zostać zaimplementowany poprzez powiązanie licznika ze stroną parzystą.
Jak to działa?
- Do wymiany zostanie wybrana strona, która najdłużej nie była używana w pamięci głównej.
- Łatwe do wdrożenia, prowadź listę, zastępuj strony, patrząc wstecz.
Funkcje
- Metoda wymiany LRU ma największą liczbę. Licznik ten nazywany jest również rejestrami starzenia, które określają ich wiek i stopień odwoływania się do powiązanych z nimi stron.
- Do wymiany należy wybrać stronę, która najdłużej nie była używana w pamięci głównej.
- Prowadzi także listę i zastępuje strony, patrząc wstecz.
Wskaźnik usterek
Wskaźnik usterek to częstotliwość, z jaką zaprojektowany system lub komponent ulega awariom. Wyraża się go w awariach na jednostkę czasu. Oznacza się to grecką literą ? (lambda).
Zalety pamięci wirtualnej
Oto zalety/korzyści korzystania z 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ę nawet większy niż cała pamięć fizyczna.
- Dane/kod należy odczytywać z dysku zawsze, gdy zajdzie taka potrzeba.
- 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 czasu, aż będzie potrzebna, po czym zostanie 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 wirtualna przestrzeń adresowa jest większa w porównaniu z pamięcią fizyczną.
Wady pamięci wirtualnej
Oto wady/wady korzystania z pamięci wirtualnej:
- Aplikacje mogą działać wolniej, jeśli system korzysta z pamięci wirtualnej.
- Przełączanie się między aplikacjami prawdopodobnie zajmuje więcej czasu.
- Oferuje mniej miejsca na dysku twardym do użytku.
- Zmniejsza stabilność systemu.
- Umożliwia działanie większych aplikacji w systemach, które nie oferują wystarczającej ilości fizycznej pamięci RAM, aby je uruchomić.
- Nie oferuje takiej samej wydajności jak pamięć RAM.
- Ma to negatywny wpływ na ogólną wydajność systemu.
- Zajmują przestrzeń dyskową, która może być wykorzystana do długoterminowego przechowywania danych.
Podsumowanie
- Pamięć wirtualna to mechanizm przechowywania, który daje użytkownikowi złudzenie posiadania bardzo dużej pamięci głównej.
- Pamięć wirtualna jest potrzebna zawsze, gdy w komputerze nie ma miejsca w pamięci fizycznej
- Mechanizm stronicowania na żądanie jest bardzo podobny do systemu stronicowania z wymianą, w którym procesy przechowywane w pamięci dodatkowej i strony są ładowane tylko na żądanie, a nie z wyprzedzeniem.
- Ważne metody zastępowania stron to 1) FIFO 2) Algorytm optymalny 3) Wymiana strony LRU.
- W metodzie FIFO (First-in-first-out) pamięć wybiera stronę do zastąpienia, która najdłużej znajdowała się pod wirtualnym adresem pamięci.
- Optymalna metoda zamiany strony polega na wybraniu tej strony do zamiany, dla której czas do kolejnego odwołania jest najdłuższy.
- Metoda LRU pomaga systemowi operacyjnemu znaleźć wykorzystanie strony w krótkim czasie.
- Pamięć wirtualna pomaga przyspieszyć, gdy do wykonania programu potrzebny jest tylko określony segment programu.
- Aplikacje mogą działać wolniej, jeśli system korzysta z pamięci wirtualnej.

