12 wspomaganie systemu operacyjnego - pamiec wirtualna

Transkrypt

12 wspomaganie systemu operacyjnego - pamiec wirtualna
Architektura komputerów
Tydzień 12
Wspomaganie systemu operacyjnego:
pamięć wirtualna
Partycjonowanie
●
●
●
Pamięć jest dzielona, aby mogło
korzystać z niej wiele procesów.
Dla jednego procesu przydzielana jest
jedna partycja.
Partycje mogą mieć stały, z góry
ustalony rozmiar lub dynamiczny,
przydzielany w miarę potrzeb.
Partycjonowanie
Proces 1
Proces 1
Proces 2
Proces 3
Proces 3
Proces 4
Proces 3
System
operacyjny
Proces 5
Proces 4
Proces 3
Wejście procesu 5
Proces 1
System
operacyjny
Wyjście procesu 1
System
operacyjny
Wejście procesu 4
System
operacyjny
Wyjście procesu 2
System
operacyjny
Proces 4
Proces 3
Stronicowanie
Lista wolnych
ramek:
13
14
15
18
20
Lista wolnych
ramek:
20
13
14
Proces A
15
16
Używana
Proces A
17
Używana
Strona
Strona
Strona
Strona
18
0
1
2
3
19
Używana
20
21
Przed przydziałem ramek
Strona
Strona
Strona
Strona
0
1
2
3
Tablica stron
procesu A:
13
14
15
18
13
14
15
Strona 0
procesu A
Strona 1
procesu A
Strona 2
procesu A
16
Używana
17
Używana
18
Strona 3
procesu A
19
Używana
20
21
Po przydziale
Stronicowanie
Adres
logiczny
2
30
Tablica
stron
procesu A
13
14
15
18
Strona 1
procesu A
13
Adres
fizyczny
Strona 2
procesu A
14
14
Strona 3
procesu A
15
30
16
17
Strona 4
procesu A
18
Pamięć wirtualna
●
●
●
●
Wykorzystujemy pamięć zewnętrzną
(dysk) do przechowywania
nieużywanych stron pamięci.
Możemy użyć większej ilości logiczej
pamięci niż dysponujemy fizycznej.
W pamięci fizycznej przechowujemy
aktualnie potrzebne strony.
Jeśli potrzebnej strony nie ma w
pamięci, ładujemy ją z dysku, zapisując
zastępowaną stronę na dysk.
Tablica stron
●
●
Tablica stron przechowuje informacje o
miejscu zapisu każdej strony wirtualnej
na dysku i w pamięci.
Ponieważ każdy dostęp do pamięci
wymaga co najmniej dwóch dostępów
(pobranie adresu z tablicy stron i
właściwy dostęp), stosuje się bufor dla
wpisu w tablicy stron w postaci rejestru
procesora (TLB – translation lookaside
buffer).
Programowe żądanie dostępu do strony
CPU sprawdza TLB
Nie
Program obsługi
błędu strony
System operacyjny otrzymuje
rozkaz odczytania strony
z dysku
Czy zapis
tablicy stron
znajduje się
w TLB?
Tak
Dostęp do tablicy
stron
Czy strona
znajduje się
w pamięci
?
Wymiana
strony
Nie
Tak
Aktualizacja TLB
CPU generuje adres fizyczny
Tak
Czy
pamięć jest
zapełniona
?
Nie
Przeniesienie strony
z dysku do pamięci
Aktualizacja tablicy
stron
Powrót do rozkazu
przy którym wystąpił
błąd strony
Segmentacja
●
Pamięć wirtualną dzielimy na segmenty.
●
Segmenty mogą mieć zmienny rozmiar.
●
●
Każdy segment może mieć przypisane
prawa dostępu.
Zalety:
–
uproszczone operowanie dużymi strukturami
danych
–
możliwość dzielenia danych między procesami
przez odpowiednie ustawienie uprawnień
–
możliwa ochrona danych lub kodu
Przestrzenie adresowe
Pentium
●
Niesegmentowana pamięć
niestronicowana.
–
●
Niesegmentowana pamięć stronicowana.
–
●
Liniowa przestrzeń adresowa.
Segmentowana pamięć niestronicowana.
–
●
Adresy wirtualne są równe fizycznym.
Cały segment jest w pamięci lub na dysku.
Segmentowana pamięć stronicowana.
–
–
Segmentowanie definiuje kontrolę dostępu.
Stronicowanie zarządza przydzielaniem
pamięci.
Segmentacja
Gdy stosowana jest segmentacja każdy adres wirtualny
składa się z 16 bitowego odniesienia segmentu i 32
bitowego adresu względnego. 2 bity z odniesienia do
segmentu służą mechanizmowi ochrony.
Z każdym segmentem związane są dwie formy ochrony:
poziom uprzywilejowania i atrybut dostępu.
Występują cztery poziomy uprzywilejowania od 0 –
najbardziej chronionego, do 3 – najmniej chronionego.
Program ma dostęp tylko do segmentów o poziomie
uprzywilejowania równym lub wyższym poziomowi
programu.
Niektóre rozkazy maszynowe mogą być wykonywane
tylko przez najbardziej uprzywilejowane programy.
Atrybut dostępu określa, czy dane mogą być dostępne
do zapisu, czy tylko do odczytu. W przypadku programów
atrybut informuje, czy dozwolone jest wykonywanie.
Stronicowanie
●
●
●
Dwa poziomy:
–
katalog stron z maksymalnie 1024 wpisami
–
do 1024 tablic stron z 1024 odnośnikami do
stron każda.
Każda strona ma 4KB, co pozwala
zaadresować 4GB.
Procesor zawiera bufor translacji
adresów tablic stron z 32 wpisami.
Translacja adresu Pentium
Adres logiczny
Segment Wyrównanie
Adres liniowy
+
Katalog Strona Wyrównanie
Adres
fizyczny
+
Tablica
segmentów
Katalog
stron
Tablica
stron
Pamięć
główna