Transcript Wykład 10
Systemy operacyjne
Wykład nr 10:
Pamięć wirtualna
Piotr Bilski
Problem
• Pamięć fizyczna jest niewystarczająca do
pomieszczenia wszystkich procesów
• Procesy nie muszą być ładowane w
całości do pamięci
• Część może być przechowywana na
nośniku trwałym
• Wirtualna pamięć adresowa ułatwia
pisanie programów i zarządzanie
procesami
Pamięć wirtualna
• Umożliwia odseparowanie pamięci
logicznej użytkownika od pamięci fizycznej
• Umożliwia procesom dzielenie plików i
pamięci
• Jest implementowana poprzez
stronicowanie na żądanie lub segmentację
na żądanie
Ilustracja działania pamięci wirtualnej
Strona 0
Strona 1
Strona 2
Strona n
Pamięć wirtualna
Mechanizmy
odwzorowania
pamięci (tablice)
Pamięć trwała
Pamięć fizyczna
ulotna
Stronicowanie na żądanie
• Proces jest przechowywany w pamięci
głównej lub pomocniczej
• Leniwa wymiana – mechanizm
sprowadzania tylko tych fragmentów
procesu, które są aktualnie potrzebne
• Procedura stronicująca odpowiada za
sprowadzanie poszczególnych stron
Aspekty stronicowania na żądanie
• Przy wymianie procesu system „zgaduje”,
które strony załadować do pamięci
• Wykorzystana jest zasada lokalności
odniesień
• Brak strony przy pobraniu argumentu
rozkazu wymaga powtórnego pobrania
rozkazu, zdekodowania i wykonania
• Dążenie do ograniczenia rozmiary obszaru
wymiany
Wsparcie sprzętowe stronicowania
• Tablica stron + bit poprawności („poprawny”
– strona jest w pamięci, „niepoprawny” –
strona jest na dysku, lub nie należy do
procesu)
• Gdy strona jest poza pamięcią operacyjną,
dostęp do niej uaktywnia pułapkę braku
strony
• Pamięć pomocnicza przechowuje strony nie
mieszczące się w pamięci operacyjnej
• Możliwość wznowienia rozkazu po
wystąpieniu braku strony
Ilustracja stronicowania na żądanie
A
B
C
D
E
F
G
H
Pamięć logiczna
0
1
2
3
4
5
6
7
4
6
9
p
n
p
n
n
p
n
n
Mechanizmy
odwzorowania
pamięci (tablice)
0
1
2
3
4
5
6
7
8
9
A
C
C
A
B
D
E
F
F
Pamięć trwała
Obsługa braku strony
START
Sprawdź wewnętrzną tablicę
Odwołanie
dozwolone?
TAK
Sprowadź stronę
Zaktualizuj tablicę
NIE
Zakończ proces
Obsługa braku strony (c.d.)
Odniesienie do pamięci
System operacyjny
pomocniczej
pułapka
odniesienie
Umieść M
i
wznowienie
Tablica stron
Pamięć logiczna
Wolna
ramka
Aktualizacja tablicy
stron
Sprowadzenie
brakującej strony
Parametry stronicowania na
żądanie
• Efektywny czas dostępu tea:
tea (1 p ) t ma p t pf
p – prawdopodobieństwo braku strony
tma – czas dostępu do pamięci (np. 100 ns)
tpf – czas obsługi braku strony (np. 25 ms)
• Jest proporcjonalny do częstości braków stron
Tworzenie procesu a pamięć
wirtualna
• Wymagane jest sprowadzenie strony z
pierwszym rozkazem
• Dwie techniki wspomagające:
– Kopiowanie przy zapisie
– Pliki odwzorowywane w pamięci operacyjnej
Kopiowanie przy zapisie
• Technika umożliwiająca ominięcie stronicowania
na żądanie podczas użycia funkcji fork
• Po rozwidleniu nie tworzy się kopii przestrzeni
adresowej – oba procesy współdzielą te same
strony
• Przydzielanie nowych stron odbywa się dopiero
podczas próby zapisu zawartości strony
• Wolne strony są przydzielane z puli
• Strony przed przydzieleniem są zerowane
(zerowanie na żądanie)
Pliki odwzorowane w pamięci
operacyjnej
• Dostęp do pliku może być realizowany
jako dostęp do pamięci wirtualnej
(odwzorowanie bloku dyskowego na
strony)
• Pierwszy dostęp do pliku skutkuje brakiem
strony
• Następne dostępy odbywają się poprzez
sprowadzanie stron z blokami pliku
• Metoda szybsza niż korzystanie z funkcji
systemowych read() i write()
Zastępowanie stron
• W systemie wieloprogramowym
sprowadzane są strony dla wielu
procesów przy ograniczonej liczbie
dostępnych ramek
• Nadprzydział pamięci to przydział
procesowi większej liczby stron, niż są
jednocześnie wykorzystywane
• Konieczne są algorytmy zastępowania
stron
Schemat podstawowy
• Gdy wszystkie ramki są zajęte, jedna jest
wybierana do nadpisania
• Poprzednia zawartość wędruje z ramki na
dysk, nowa z dysku do ramki (dwa dostępy
do pamięci!)
• Aby zmniejszyć liczbę dostępów
wprowadza się bit zabrudzenia
• Możliwe jest odwzorowanie dużej logicznej
przestrzeni adresowej na małą przestrzeń
fizyczną
Zastępowanie metodą FIFO
• Najprostszy algorytm, opcjonalnie
korzystający ze wskazań czasu
wprowadzenia strony do pamięci
• Przykład działania:
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7
7
0
7
2
2
2
4
4
4
0
0
0
7
0
0
3
3
3
2
2
2
1
1
1
1
1
1
0
0
0
3
3
3
2
2
Anomalia Belady’ego
Liczba braków stron
14
12
10
8
6
4
2
0
0
2
4
Liczba ramek
6
8
Zastępowanie optymalne
• Najniższy możliwy współczynnik braków
stron
• Unika anomalii Belady’ego
• Zastępowana jest ta strona, która
najdłużej nie będzie używana
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7
7
0
7
2
2
2
2
2
7
0
0
0
4
0
0
0
1
1
3
3
3
1
1
Zastępowanie metodą LRU
• Aproksymacja metody optymalnej
• Zastępowana jest strona nieużywana od
najdłuższego czasu
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7
7
0
7
2
2
4
4
4
0
1
1
1
0
0
0
0
0
3
3
3
0
0
1
1
3
3
2
2
2
2
2
7
Metoda LRU - problemy
• Porządek ramek ustala się poprzez
zastosowanie:
– liczników – każda strona ma stowarzyszony
licznik czasu, aktualizowany zawsze, gdy
strona jest użyta. Usuwa się strony z
najmniejszym wskazaniem licznika
– stosu – ostatnio użyta strona jest
umieszczana na szczycie. Usuwa się strony
na spodzie (implementacja – dwukierunkowa
lista)
• Sprzęt na ogół zbyt kosztowny!
Zastępowanie stron przybliżające
metodę LRU
• W większości systemów nie ma liczników
ani stosu, ale można wprowadzić bit
odniesienia, ustawiany, gdy nastąpiło
użycie strony
• Na początku pracy wszystkie bity są
zerowane
• Po pewnym czasie wiadomo, które strony
były użyte, a które nie
Algorytm dodatkowych bitów
odniesienia
• Z każdą stroną kojarzona jest pewna
liczba bitów odniesienia (np. 8)
• Przy każdym użyciu, skrajny lewy bit jest
ustawiany, a pozostałe są przesuwane w
prawo
• Bity są używane do ilustracji historii użycia
jako liczby całkowite bez znaku
• Usuwana jest strona, której odpowiada
najmniejsza liczba
Algorytm drugiej szansy
• Wybór strony do usunięcia odbywa się na
zasadzie FIFO
• Po wybraniu strony sprawdza się jej bit
odniesienia
– 0 – strona zostaje zastąpiona
– 1 – strona jest pominięta (dostaje „drugą
szansę”), jej bit się zeruje
Ulepszony algorytm drugiej szansy
• Wykorzystuje dwa bity: odniesienia i
modyfikacji. Interpretuje się je
następująco:
– (0,0) – strona nieużywana i nie zmieniona
– (0,1) – nieużywana, ale zmieniona (trzeba
zapisać na dysku przed usunięciem)
– (1,0) – używana i nie zmieniona (za chwilę
znowu zostanie użyta)
– (1,1) – używana i zmieniona
Zastępowanie stron oparte na
zliczaniu
• Wykorzystują liczniki odniesień do strony
• Główne metody:
– Zastępowanie strony najrzadziej używanej
(LFU)
– Zastępowanie strony najczęściej używanej
(MFU)
• Metody są kosztowne i nie przybliżają
algorytmu optymalnego zbyt dobrze
Przydział ramek
• System jednoużytkownikowy:
– Prosty algorytm zastępowania stron
– Proces użytkownika dostaje dowolną dostępną
ramkę
• System wieloużytkownikowy:
– Minimalna liczba ramek przydzielonych dla
procesu (wyznaczona przez strukturę rozkazu),
np. rozkaz jednoadresowy potrzebuje dwóch
ramek,
adresowanie
pośrednie
wymaga
dodatkowej ramki itd.
– Liczba poziomów adresowania pośredniego!
Algorytmy przydziału ramek w
systemie wieloprogramowym
• Przydział równy - rozdzielenie ramek
równo między n procesów (nadwyżka
zostaje buforem wolnych ramek)
• Przydział proporcjonalny – dla procesów
różnej wielkości:
ai=si / S*m=si / Σsi*m
• Uwzględnienie priorytetów!
Przydział lokalny i globalny
• Przydział globalny – wszystkie ramki
dostępne dla procesu (nawet przydzielone
innemu procesowi!) – lepszy!
• Przydział lokalny – wybór tylko ze zbioru
ramek przydzielonych do tego procesu
Szamotanie
• Zjawisko ciągłego występowania braków
stron ze względu na przydział zbyt małej
liczby ramek
• Zależy od stopnia wieloprogramowości
• Istotne ograniczenie wydajności
• Wykorzystanie procesora maleje (bo
procesy głównie czekają na przydział
stron), więc planista zwiększa stopień
wieloprogramowości
• Wzrasta czas dostępu do pamięci
Wykorzystanie procesora
Ilustracja szamotania
szamotanie
Stopień wieloprogramowości