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
System
operacyjny
Proces 1
Proces 2
Proces 3
System
operacyjny
Proces 1
Proces 3
System
operacyjny
Proces 1
Proces 4
Proces 3
System
operacyjny
Proces 3
System
operacyjny
Proces 5
Proces 3
Proces 4
Proces 4
W
yj
śc
ie
pr
o
ce
su
2
W
ej
śc
ie p
ro
ce
su
4
W
yj
śc
ie
pr
o
ce
su
1
W
ej
śc
ie
p
ro
ces
u
5
13
14
15
16
17
18
19
20
21
Stronicowanie
Używana
Używana
Używana
Lista wolnych
ramek:
13
14
15
18
20
Proces A
Strona 0
Strona 1
Strona 2
Strona 3
13
14
15
16
17
18
19
20
21
Strona 0
procesu A
Używana
Używana
Używana
Lista wolnych
ramek:
20
Strona 1
procesu A
Strona 2
procesu A
Strona 3
procesu A
Proces A
Strona 0
Strona 1
Strona 2
Strona 3
Tablica stron
procesu A:
13
14
15
18
Po przydziale
Przed przydziałem ramek
Stronicowanie
14
30
14
13
15
18
2
30
Strona 1
procesu A
Strona 2
procesu A
Strona 3
procesu A
Strona 4
procesu A
13
14
15
16
17
18
Adres
logiczny
Adres
fizyczny
Tablica
stron
procesu A
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).
Czy zapis
tablicy stron
znajduje się
w TLB?
CPU sprawdza TLB
Programowe żądanie dostępu do strony
Dostęp do tablicy
stron
Czy strona
znajduje się
w pamięci
?
Aktualizacja TLB
CPU generuje adres fizyczny
System operacyjny otrzymuje
rozkaz odczytania strony
z dysku
Czy
pamięć jest
zapełniona
?
Wymiana
strony
Przeniesienie strony
z dysku do pamięci
Aktualizacja tablicy
stron
Program obsługi
błędu strony
Powrót do rozkazu
przy którym wystąpił
błąd strony
Tak
Tak
Tak
Nie
Nie
Nie
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.
–
Adresy wirtualne są równe fizycznym.
●
Niesegmentowana pamięć stronicowana.
–
Liniowa przestrzeń adresowa.
●
Segmentowana pamięć niestronicowana.
–
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
Segment Wyrównanie
Tablica
segmentów
+
Katalog
Wyrównanie
Strona
+
Katalog
stron
Tablica
stron
Pamięć
główna
Adres
fizyczny
Adres logiczny
Adres liniowy