Zarządzanie pamięcią operacyjną

Transkrypt

Zarządzanie pamięcią operacyjną
Podstawowe pojęcia
Zarządzanie pamięcią operacyjną
1.
2.
3.
4.
5.
6.
7.
Wiązanie adresu
Problemy zarządzania pamięcią
Logiczna i fizyczna przestrzeń adresowa
Przydział ciągłej przestrzeni adresowej
Stronicowanie
Segmentacja
Pamięć wirtualna
! Pamięć operacyjna jest postrzegana jako tablica bajtów lub
słów indeksowana adresami.
! Zbiór wszystkich możliwych adresów nazywany jest
przestrzenią adresową
! Cykl rozkazowy w systemie o architekturze von
Neumanna:
! pobranie przez jednostkę centralną rozkazu z komórki (lub
komórek) pamięci adresowanej przez wartość licznika rozkazów
! pobranie danych z pamięci i/lub zapis danych do pamięci przez
jednostkę centralną stosownie do pobranego i zdekodowanego
rozkazu
Zarządzanie pamięcią operacyjną
2
Wiązanie adresu
Logiczna i fizyczna przestrzeń adresowa
! W czasie kompilacji — adresy bezwzględne komórek
pamięci, do których następuje odwołanie, ustalane są
czasie kompilacji
! W czasie ładowania — adresy komórek pamięci ustalane
są w czasie ładowania programu
! W czasie wykonania — adresy komórek pamięci są
ustalane w czasie wykonywania instrukcji
! Adres logiczny — adres wygenerowany przez procesor i
wystawiony na magistrali adresowej
! Adres fizyczny — adres przekazany do jednostki pamięci
i umieszczony w jej rejestrze adresowym
! Wiązanie adresu podczas kompilacji lub ładowania
powoduje, że adresy logiczne i fizyczne są takie same.
! Wiązanie adresu w czasie wykonania powoduje rozróżnienie adresów logicznych (wirtualnych) i fizycznych.
! Odwzorowanie adresów wirtualnych na fizyczne
dokonywane jest przez jednostkę zarządzania pamięcią
(ang. memory management unit — MMU)
Zarządzanie pamięcią operacyjną
3
Zarządzanie pamięcią operacyjną
Przykład odwzorowania adresu logicznego na
fizyczny
Przykład ochrony obszaru pamięci
rejestr
graniczny
rejestr
przemieszczenia
4
rejestr
przemieszczenia
pamięć
pamięć
1000
adres
logiczny
25
+
adres
fizyczny
1025
jednostka zarządzania
pamięcią (MMU)
Zarządzanie pamięcią operacyjną
N
T

procesor
pułapka
1000
adres
logiczny
+
adres
fizyczny
procesor
5
Zarządzanie pamięcią operacyjną
6
1
Przydział ciągłego obszaru pamięci —
pierwsze dopasowanie
Przydział ciągłego obszaru pamięci
blok
! Pierwsze dopasowanie — przydziela się pierwszy wolny
obszar (tzw. dziurę) o wystarczającej wielkości.
Poszukiwanie kończy się po znalezieniu takiego obszaru.
! Najlepsze dopasowanie — przydziela się najmniejszy
dostatecznie duży wolny obszar pamięci. Konieczne jest
przeszukanie wszystkich dziur.
! Najgorsze dopasowanie — przydziela się największy
wolny obszar pamięci. Konieczne jest przeszukanie
wszystkich dziur.
Zarządzanie pamięcią operacyjną
kierunek
przeszukiwania
pamięć
7
Zarządzanie pamięcią operacyjną
Przydział ciągłego obszaru pamięci —
najlepsze dopasowanie
8
Przydział ciągłego obszaru pamięci —
najgorsze dopasowanie
blok
blok
kierunek
przeszukiwania
kierunek
przeszukiwania
pamięć
Zarządzanie pamięcią operacyjną
pamięć
9
Fragmentacja zewnętrzna
Zarządzanie pamięcią operacyjną
10
Fragmentacja wewnętrzna
obszar nie
wykorzystany
blok
blok
zapotrzebowanie
przydział
Przydział dokładnie tylu bajtów, ile wynosi zapotrzebowanie, powoduje, że
koszt utrzymania bardzo małego obszaru wolnego jest niewspółmiernie
duży, np. dane o obszarze zajmują więcej bajtów, niż rozmiar tego obszaru.
Dlatego wolny obszar przydzielany jest w całości, ale nie jest w pełni
wykorzystany.
pamięć
Zarządzanie pamięcią operacyjną
11
Zarządzanie pamięcią operacyjną
12
2
Stronicowanie (ang. paging)
paging)
Schemat adresowania ze stronicowaniem
procesor
! Podział fizycznej przestrzeni adresowej na bloki stałej
długości, zwane ramkami (ang. frames).
! Podział logicznej przestrzeni adresowej na bloki stałej
(takiej samej jak ramki) długości, zwany stronami (ang.
pages).
! Odwzorowanie pomiędzy numerem strony a numerem
ramki za pomocą tablicy stron (ang. page table).
! Adres zawiera numer strony i przesunięcia na stronie
(ang. offset).
nr strony
przesunięcie
(22 bity)
s
s
0
1
2
0
1
2
3
4
5
6
7
8
9
10
11
a
b
c
d
e
f
g
h
i
j
k
l
0
1
2
3
3
2
0
1
tablica
stron
strony
Zarządzanie pamięcią operacyjną
procesor
0
e
f
g
h
a
b
c
d
bufory TLB
—numer
numerstrony
strony
ss—
—numer
numerramki
ramki
rr—
—przesunięcie
przesunięcie
oo—
3
r
Zarządzanie pamięcią operacyjną
! W odwróconej tablicy stron jest jedna pozycja dla każdej
ramki.
! Tablica stron indeksowana jest numerem ramki, a zawiera
wirtualny numer strony.
przesunięcie
na stronie
procesor
wewnętrzna
tablica stron
s1
pamięć
adres
logiczny
s
o
ramka
pamięci
s2
—numer
numerstrony
strony
ss—
—numer
numerramki
ramki
rr—
—przesunięcie
przesunięcie
oo—
o
o
Zarządzanie pamięcią operacyjną
16
Odwrócona tablica stron (ang. inverted page table)
table)
zewnętrzna
tablica stron
s2
s
tablica
stron
Stronicowanie wielopoziomowe
Budowa adresu
o
o
adres
fizyczny
2
15
nr strony
wewnętrznej
pamięć
r
ramki
nr strony
zewnętrznej
14
adres
logiczny
s
o
1
Zarządzanie pamięcią operacyjną
s1
tablica
stron
Bufory translacji adresów stron (ang. translation
looklook-aside buffers — TLBs)
TLBs)
Przykład odwzorowania stron w ramki
i
j
k
l
o
o
adres
fizyczny
r
—numer
numerstrony
strony
ss—
—numer
numerramki
ramki
rr—
—przesunięcie
przesunięcie
oo—
13
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
o
r
(10 bitów)
Zarządzanie pamięcią operacyjną
pamięć
adres
logiczny
17
r
r
o
o
adres
fizyczny
s
odwrócona tablica
stron
Zarządzanie pamięcią operacyjną
18
3
Segmentacja (ang. segmentation)
segmentation)
Schemat adresowania z segmentacją
STBR
! Przestrzeń adresów logicznych jest postrzegana jako zbiór
segmentów.
! Segment ma nazwę i długość.
! Adres logiczny składa się z numeru segmentu i
przesunięcia wewnątrz segmentu.
! Odwzorowanie adresów logicznych w fizyczne zapewnia
tablica segmentów, której element zawiera m.in. fizyczny
adres bazowy segmentu i granicę (rozmiar segmentu).
tablica segmentów
pamięć
s
+
granica
T

N
baza
+
adres
fizyczny
pułapka
s
o
adres logiczny
Zarządzanie pamięcią operacyjną
19
Schemat adresowania z segmentacją i stronicowaniem
Zarządzanie pamięcią operacyjną
20
Pamięć wirtualna
STBR
tablica segmentów
s
+
pamięć
granica
baza tablicy stron
pułapka
N
s

s’
T
o’
+
r
! Stronicowanie na żądanie (ang. demand paging)
! Błąd (braku) strony (ang. page-fault)
! Zastępowanie stron (ang. page replacement)
! Algorytmy zastępowanie (ang. page-replacement alg.)
! Algorytm FIFO
! Algorytm optymalny
! Algorytm LRU
! Algorytm LFU
! Algorytm MFU
adres
fizyczny
r o’
! Problemy ze stronicowaniem (szamotanie stron, problem
wznawiania wykonania rozkazów)
o
adres logiczny
Zarządzanie pamięcią operacyjną
21
Uzasadnienie stosowania pamięci wirtualnej
22
Zalety stosowania pamięci wirtualnej
! Pewne fragmenty kodu programu wykonywane są bardzo
rzadko lub nigdy nie są wykonywane, np.:
! procedury obsługi bardzo mało prawdopodobnych wyjątków lub
błędów,
! moduły programu, które w typowych warunkach eksploatacji
okazują się zbędne.
! Pewne fragmenty kodu programu nie muszą być dostępne
jednocześnie.
! Rozmiary pewnych struktur danych (np. tablic) ustalane są
z nadmiarem w stosunku do typowych potrzeb.
Zarządzanie pamięcią operacyjną
Zarządzanie pamięcią operacyjną
23
! Możliwość zwiększenia rozmiarów programów ponad
rozmiar pamięci fizycznej
! Możliwość zwiększenia liczby procesów (poprawa
wykorzystania procesora i przepustowości systemu bez
zwiększania czasu odpowiedzi i czasu cyklu
przetwarzania) dzięki zredukowaniu zapotrzebowania na
pamięć fizyczną przez poszczególne procesy
! Zmniejszenie liczby operacji wejścia-wyjścia i tym samym
zredukowanie czasu ładowanie programów przy ich
uruchamianiu, gdyż nie jest konieczne ładowanie
programów w całości
Zarządzanie pamięcią operacyjną
24
4
Stronicowanie na żądanie
Obsługa błędu strony
! Stronicowanie na żądanie (ang. demand paging) a
stronicowanie w przypadku wymiany (ang. swapping)
! wymiana — pomiędzy pamięcią fizyczną a pomocniczą przesyłane
są całe procesy,
! stronicowanie na żądanie — proces traktowany jest jako ciąg stron,
które są sprowadzane do pamięci tylko wówczas, gdy jest to
konieczne (leniwa wymiana, ang. lazy swapping).
! Wymaganie sprzętowe związane ze stronicowaniem na
żądanie
adres
fizyczny
r
o
tablica
stron
system
operacyjny
pułapka
—numer
numerstrony
strony
ss—
—numer
numerramki
ramki
rr—
—przesunięcie
przesunięcie
oo—
s
urządzenie
wymiany
błąd
strony
n
procesor
s
o
adres
logiczny
! tablica stron z bitem poprawności (ang. valid-invalid bit) dla
każdej pozycji,
! urządzenie wymiany (ang. swap device) — pamięć pomocnicza.
Zarządzanie pamięcią operacyjną
pamięć
25
Zarządzanie pamięcią operacyjną
26
Zastępowanie stron (ang. page replacement)
replacement)
Algorytmy zastępowania stron
(ang. pagepage-replacement algorithms)
algorithms)
! Problem zastępowania stron pojawia się wówczas, gdy w
pamięci fizycznej brakuje wolnych ramek i konieczne jest
zwolnienie jakieś ramki poprzez usunięcie z niej strony.
urządzenie
! Jeśli strona była modyfikowymiany
wana w pamięci, konieczne
pamięć
jest zapisanie jej na dysku
⇒ konieczność wprowadzenie bitu modyfikacji (ang.
modify bit), zwanego też
bitem zabrudzenia (ang.
dirty bit).
! Algorytm FIFO (ang. First In First Out) — zastępowana
jest strona najstarsza (najwcześniej wprowadzona do
pamięci)
! Algorytm OPT (MIN) — zastępowana jest strona, która
najdłużej nie będzie używana
! Algorytm LRU (ang. Least Recently Used) — zastępowana jest najdawniej używana strona (najdłużej nie używana)
! LFU (ang. Least Frequently Used) — zastępowana jest
najrzadziej używana strona
! MFU (ang. Most Frequently Used) — zastępowana jest
najczęściej używana strona
Zarządzanie pamięcią operacyjną
27
! W systemie pamięci wirtualnej są 4 ramki.
! Wszystkie ramki są początkowo puste
! W systemie pojawiają się następujące odniesień (odwołań)
do stron: 1, 2, 3, 4, 1, 4, 3, 4, 5, 2, 1, 4, 3, 4
2
1
3
1
2
4
1
2
3
5
1
2
3
4
1
2
3
4
1
2
3
4
Zarządzanie pamięcią operacyjną
1
2
3
4
1
2
3
4
28
Przykład działania algorytmu zastępowania stron (2)
Przykład działania algorytmu zastępowania stron
1
Zarządzanie pamięcią operacyjną
Dalszy ciąg
odniesień:
2, 1, 4, 3, 4
2
1
2
3
4
LRU
LRU
29
1
FIFO
FIFO
3
5
2
3
4
2
1
5
3
4
LFU
LFU
OPT
OPT
1
2
5
4
4
1
5
3
4
Zarządzanie pamięcią operacyjną
MFU
MFU
1
2
3
5
30
5
Przykład anomalii Belady’ego
Implementacja algorytmu FIFO
! Ciąg odniesień: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
! Przy zastosowaniu algorytmu FIFO dla 3 ramek mamy 9
błędów strony, a dla 4 ramek mamy 10 błędów strony
! Utrzymywanie listy numerów stron w kolejności ich
sprowadzania do pamięci
! Umieszczanie numeru sprowadzanej strony na końcu listy
! Usuwanie z pamięci (i z listy) strony, której numer
znajduje się na początku listy
! Możliwość wystąpienia anomalii Belady’ego (przy
zwiększeniu liczby ramek następuje przypadkowe
zwiększenie liczby błędów strony)
Zarządzanie pamięcią operacyjną
1
1
2
1
2
3
4
2
3
4
1
3
4
1
2
5
1
2
5
1
2
5
1
2
5
3
2
5
3
4
5
3
4
1
1
2
1
2
3
1
2
3
4
1
2
3
4
1
2
3
4
5
2
3
4
5
1
3
4
5
1
2
4
5
1
2
3
4
1
2
3
4
5
2
3
31
Zarządzanie pamięcią operacyjną
Implementacja algorytmu LRU
Algorytmy przybliżające metodę LRU
! Licznik — przed każdym odwołaniem do pamięci
zwiększana jest wartość pewnego licznika i wpisywana do
odpowiedniej pozycji opisującej stronę w tablicy stron (lub
w innej specjalnej strukturze systemu operacyjnego). Z
pamięci usuwana jest wówczas strona z najmniejszą
wartością tego licznika, co wymaga przejrzenia całej
tablicy stron.
! Stos — numery stron, do których następuje odwołanie,
odkładane są na szczycie stosu. Przed odłożeniem na
szczycie numer strony musi być wydobyty ze środka stosu,
czyli z miejsca, gdzie był ostatnio odłożony. W tej
implementacji pamięci usuwana jest strona z dna stosu.
! Niezbędne wspomaganie sprzętowe:
! bit odniesienia (ang. reference bit) — ustawiany dla danej strony
przez sprzęt zawsze, gdy następuje zapis lub odczyt na tej stronie,
! bit modyfikacji (ang. modify bit) — ustawiany dla danej strony
przez sprzęt zawsze, gdy następuje zapis na tej stronie.
! Algorytmy korzystające ze wspomagania sprzętowego:
! algorytm dodatkowych bitów odwołań — wykorzystuje bit
odniesienia,
! algorytm drugiej szansy — wykorzystuje bit odniesienia,
! alepszony algorytm drugiej szansy — wykorzystuje bit odniesienia
i bit modyfikacji.
33
Zarządzanie pamięcią operacyjną
tablica dodatkowych
bitów odwołań
1
0
0
1
1
1
0
1
0
0
0
1
0
0
0
1
0
0
0
1
0
1
0
0
1
0
0
0
1
1
0
0
0
1
0
0
1
0
0
1
0
0
1
0
0
1
0
1
0
1
0
1
0
0
1
0
0
0
1
0
1
0
0
Zarządzanie pamięcią operacyjną
1
0
0
1
0
0
1
0
1
1
1
0
1
1
0
1
1
0
tablica stron
5
M
4
1
34
Algorytm drugiej szansy
strony do
usunięcia
tablica stron
bit odnies.
Algorytm dodatkowych bitów odwołań
ostatnia
2
3
35
0
1
2
3
4
5
6
7
8
bit odnies.
Zarządzanie pamięcią operacyjną
32
1
0
0
1
0
1
0
1
0
lista stron
1
strona do
usunięcia
0
0
3
6
7
4
8
2
Zarządzanie pamięcią operacyjną
5
36
6
tablica stron
0
1
2
3
4
5
6
7
8
bit odnies.
bit modyf.
Ulepszony algorytm drugiej szansy
0
0
1
1
0
1
0
1
0
1
0
0
1
1
1
0
1
0
Implementacja algorytmów LFU i MFU
lista stron
1
strona
do
usunięcia
0
3
6
7
4
8
2
! Utrzymywanie liczników odniesień do każdej ze stron i ich
inkrementacja przy każdym odwołaniu do odpowiedniej
strony
! Usuwanie strony z najmniejszą (LFU) lub największą
(MFU) wartością licznika
! Zerowanie licznika po usunięciu strony z pamięci
5
Zarządzanie pamięcią operacyjną
37
Problemy wynikające ze stronicowania
38
Przydział ramek
! Problem wznawiania rozkazów — w ramach wykonania
jednego rozkazu może nastąpić kilka różnych odwołań do
pamięci (pobranie kodu rozkazu, pobranie operandów,
zapamiętanie wyniku), a każde odwołanie może spowodować błąd strony i konieczność wznowienia wykonania.
rozkazu. Załadowanie strony z drugim operandem może
spowodować usunięcie strony z pierwszym operandem itd.
! Szamotanie (ang. trashing) — algorytm zastępowania stron
może wyrzucić z pamięci stronę, która będzie potrzebna do
wykonania następnego rozkazu. Podobna sytuacja może
zajść przy wykonywaniu następnego rozkazu. W rezultacie
większa część aktywności procesu przeznaczona jest na
stronicowanie
Zarządzanie pamięcią operacyjną
Zarządzanie pamięcią operacyjną
39
Szamotanie (migotanie) stron (ang. trashing)
trashing)
! Początkowa liczba ramek dla procesu
! podział równomierny (ang. equal allocation)
! podział proporcjonalny (ang. proportional allocation)
! przydział zależny od priorytetu procesu
! Minimalna liczba ramek — zdefiniowana przez architekturę
komputera (zależna od minimalnej liczby komórek
adresowanych przez jeden rozkaz)
! Przydział ramek:
! lokalny — algorytm wymiany zwalnia tylko ramki przydzielone
procesowi, który spowodował błąd strony,
! globalny — algorytm wymiany usuwa strony z dostępnej puli ramek
w całym systemie (w szczególności usuwa strony innych procesów).
Zarządzanie pamięcią operacyjną
40
Zapobieganie szamotaniu
! Przyczyna: zamiar zwiększenia wykorzystania procesora
przez zwiększenie liczby procesów w systemie z
globalnym mechanizmem zastępowania stron
Skutek: wzrost liczby procesów oczekujących na obsługę
przez urządzenie stronicujące i
spadek liczby procesów gotowych
Ostateczny efekt: zmniejszenie
wykorzystania procesora
! Szamotanie można ograniczyć przez zastosowanie
algorytmu zastępowania lokalnego lub priorytetowego (nie
likwiduje to jednak problemu!!!).
! Szamotanie można zlikwidować, dostarczając procesowi
tylu wolnych ramek ilu potrzebuje do wykonania
określonego fragmentu programu (np. procedury, pętli).
Jak się dowiedzieć ile wolnych
ramek jest potrzebnych procesowi
Zarządzanie pamięcią operacyjną
41
Zarządzanie pamięcią operacyjną
42
7
Definicja zbioru roboczego
Model zbioru roboczego (ang. workingworking-set model)
model)
! Zbiór roboczy procesu (ang. working-set) — zbiór stron, do
których nastąpiło odwołanie w ciągu ostatnich ∆ odwołań
(tzw. oknie zbioru roboczego) w czasie działania procesu
! Okno zbioru roboczego (ang. working-set window) —
liczba odwołań do pamięci, przez które dana strona pozostaje w zbiorze roboczym od ostatniego odwołania do niej
! Założenie: program wykazuje lokalność odwołań do
pamięci, czyli ma charakterystykę strefową.
! Model strefowy (ang. locality model)
! strefa — zbiór stron pozostających we wspólnym użyciu
(używanych łącznie w czasie wykonywania określonego
fragmentu programu),
! wykonanie programu sprowadza się do przechodzenia z jednej
strefy do drugiej,
! program składa się z wielu stref, najczęściej zachodzących na
siebie.
1, 2, 4, 5, 7, 3, 2, 4, 4, 6, 7, 4, 1
ZR = {3, 4, 5, 7}
∆=4
ZR = {2, 3, 5, 7}
∆=6
ZR = {2, 3, 4, 6, 7}
ZR = {2, 4, 6, 7}
Zarządzanie pamięcią operacyjną
43
Zarządzanie pamięcią operacyjną
Ustalanie liczby potrzebnych ramek
Kontrola częstości błędów strony
! Zapotrzebowanie na ramki w całym systemie jest sumą
rozmiarów zbiorów roboczych, czyli Z = Σ|ZRi|,
gdzie |ZRi| jest mocą (liczbą elementów) zbioru ZRi, czyli
zapotrzebowaniem i-tego procesu na ramki.
! Jeśli Z > m, gdzie m jest całkowitą liczbą ramek w systemie dostępną dla procesów użytkownika, to zapotrzebowanie jest zbyt duże i może powstać szamotanie. System
operacyjny musi wówczas wstrzymać wykonywanie
jakiegoś procesu i zwolnić zajmowane przez niego ramki
! Jeśli w systemie są wolne ramki (Z < m), to można
rozpocząć nowy proces.
! Przy każdym błędzie strony generowanym przez proces
zwiększany jest licznik błędów strony danego procesu.
! W określonych okresach czasu (generowanych przez
timer) sprawdzane są (a następnie zerowane) wartości
liczników poszczególnych procesów.
! Jeśli wartość licznika jest większa od ustalonej górnej
granicy, to procesowi przydzielana jest dodatkowa ramka.
! Jeśli wartość licznika jest mniejsza od ustalonej dolnej
granicy, to procesowi zabierana jest jedna ramka.
! W przypadku zapotrzebowania większego niż liczba wolnych ramek konieczne jest wstrzymanie jakiegoś procesu.
Zarządzanie pamięcią operacyjną
45
Zarządzanie pamięcią operacyjną
44
46
8

Podobne dokumenty