zbigniew s. szewczak podstawy systemów operacyjnychzssz/pso2004/w9.pdftoruń, 2004 zbigniew s....
TRANSCRIPT
Działanie systemu
System
Pamięć
Wejście-Wyjście
Sterowanie
Peryferia
Linie komuni-kacyjne
Procesy
Komputer
Zarządzanie pamięcią
☛ Podstawy☛ Logiczna i fizyczna przestrzeń adresowa☛ Wymiana☛ Przydział ciągły☛ Stronicowanie☛ Segmentacja☛ Segmentacja ze stronicowaniem
Podstawy
☛ Program musi być wprowadzony do pamięcioperacyjnej i przydzielony odpowiedniemuprocesowi
☛ Kolejka wejściowa – (ang. input queue) zbiórprocesów czekających na dysku nawprowadzenie do pamięci w celu wykonania
☛ Program użytkownika, zanim zostaniewykonany, przechodzi przez kilka faz
Wieloetapowe przetwarzaniaprogramu użytkownika
program źródłowy
kompilator asembler
modułwynikowy
program linkujący
moduł ładowalny
program ładujący
moduły wynikowe
bibliotekasystemowa
bibliotekasystemowa ładowana dynamicznie
obraz binarny programu w pamięci
łączenie dynamiczne łączenie
statyczne
czas kompilacji
czas ładowania
czas wykonania (run time)
Powiązanie rozkazów i danychz adresami pamięci (1)
☛ Czas kompilacji: Jeśli podczaskompilacji jest znane miejsce, w którymproces będzie przebywał, to możnawygenerować kod bezwzględny (ang.absolute code); gdy w późniejszymczasie ten adres początkowy ulegniezmianie, wówczas kod taki trzebaskompilować od nowa
Powią zanie rozkazów i danych z adresami pamię ci moż e zostaćwykonane w dowolnym z trzech kroków
Powiązanie rozkazów i danychz adresami pamięci (2)
☛ Czas ładowania: Jeśli podczaskompilacji nie wiadomo, gdzie będzieumieszczony proces w pamięci, tokompilator musi wytwarzać kodprzemieszczalny (ang. relocatable)
☛ Czas wykonania: Jeśli proces możeulegać przemieszczeniu z jednegomiejsca pamięci do innego podczasswojego wykonania to trzeba zastosowaćspecjalny sprzęt do mapowania adresów(np. bazowe i graniczne rejestry).
Logiczna i fizyczna przestrzeńadresowa☛ Adres oglądany przez jednostkę pamięci zwie się
fizyczną przestrzenią adresową ; to w jakisposób fizyczna przestrzeń adresowa jestodwzorowywana jest podstawową cechązarzadzania pamięcią☛ Logiczny adres – wygenerowany przez CPU; jeśli
odwzorowany na adres fizyczny podczas wykonywaniaprogramu wtedy jest to wirtualny adres
☛ Fizyczny adres – adres widziany przez sterownik pamięci
☛ Adres logiczny i fizyczny jest taki sam podczaskompilacji i ładowania; logiczny(wirtulany) ifizyczny adres różnią się podczas wykonania
Jednostka zarządzaniapamięcią (MMU)
☛ Urządzenie sprzętowe dokonująceodwzorowania adresów fizycznych na wirtualne(ang. memory-managament unit)
☛ W MMU do każdego adresu wytwarzanego przezproces użytkownika dodawana jest wartośćrejestru przemieszczenia (ang. relocationregister) w chwili odwoływania się do pamięci
☛ program użytkownika nigdy nie ma do czynieniaz rzeczywistym adresem; program ten działa nana logicznych adresach
Przemieszczenie dynamiczne zz użyciem rejestru
rejestr przemieszczenia
pamięć
CPU
14000
+
jednostka zarządzania pamięcią (MMU)
adres fizyczny 14364
adres logiczny 346
Ładowanie dynamiczne
☛ Podprogram nie jest wprowadzany do pamięcidopóty, dopóki nie zostanie wywołany
☛ Lepsze wykorzystanie pamięci; nigdy niezostanie załadowany podprogram, którego sięnie używa
☛ Schemat ten jest szczególnie przydatny wtedy,kiedy trzeba okazjonalnie wykonać wielkiefragmenty kodu (np. obsługa błedów)
☛ Nie wymaga specjalnego wsparcia ze stronysystemu operacyjnego; użytkownicy projektująwykorzystanie procedur bibliotecznych
Konsolidacja dynamiczna☛ Konsolidację opóźnia się do czasu wykonania☛ W obrazie binarnym, w miejscu odwołania
bibliotecznego znajduje się tylko namiastka(ang. stub) procedury będąca małymfragmentem kodu, wskazującym jak odnaleźćodpowiedni, rezydujący w pamięci podprogrambiblioteczny lub jak załadować bibliotekę jeślipodprogramu nie ma w pamięci
☛ Namiastka wprowadza na swoje miejsce adrespodprogramu i go wykonuje
☛ System operacyjny sprawdza podprogram czyjest w pamięci a jeśli nie ma to go sprowadza
Konsolidacja dynamiczna (c.d.)☛ Do pamięci można załadować więcej niż jedną
wersję biblioteki, każdy program posłuży się swojąinformacją o wersji, aby wybrać właściwą bibliotekę
☛ Niezgodności powodowane zmianami w biblioteceuwidaczniają się tylko w programachskompilowanych z nowym numerem wersji
☛ Biblioteki dzielone (ang. shared libraries)☛ Konsolidacja dynamiczna (ang. dynamic linking )
wymaga wspomagania ze strony systemuoperacyjnego, niektóre systemy realizują jedyniekonsolidację statyczną (ang. static linking)
Nakładki
☛ Idea polega na przechowywaniu w pamięci tylkotych danych i rozkazów, które są stalepotrzebne
☛ Nakładki (ang. overlays) są potrzebne w sytuacjigdy proces jest większy niż ilość przydzielonejmu pamięci
☛ Implementowane z poziomu użytkownika; niewymagają wsparcia ze strony systemuoperacyjnego; zrozumienie dużego programujest trudne więc projektowanie nakładek jestzłożonym przedsięwzięciem
Nakładki - przykład
☛ Dwuprzebiegowy asembler☛ I przebieg konstruuje tablicę symboli☛ II przebieg generuje kod maszynowy☛ Kod przebiegu I = 70KB, II = 80KB, tablica
symboli = 20KB, wspólne podprogramy = 30KB☛ Wszystkiego 200KB; mamy tylko 150KB pamięci☛ Kod przebiegu I i II są niezależne:
☛ I nakładka : I kod + tablica + wspólne podprogramy☛ II nakładka : II kod + tablica + wspólne podprogramy☛ moduł obsługi nakładek = 10KB
Nakładki dwuprzebiegowegoasemblera
tablicasymboli
wspólnepodprogramy
moduły obsługi nakładek
przebieg 1 przebieg 2
20 kB
30 kB
10 kB
70 kB80 kB90 kB
Wymiana
☛ Proces może być tymczasowo odsyłany (ang.swapped) do pamięci pomocniczej (ang. backingstore) i pobierany z powrotem do pamięcioperacyjnej w celu kontynuowania działania
☛ Pamięć pomocnicza (ang. backing store) - jestnią na ogół szybki dysk dostatecznie pojemnyaby pomieścić kopie obrazów pamięciwszystkich użytkowników; powinien takżeumożliwiać bezpośredni dostęp do tych obrazówpamięci
Wymiana (c.d.)
☛ Wytaczanie (ang. roll out), wtaczanie (ang. rollin) - wariant wymiany wykorzystywany wplanowaniu priorytetowym; procesniskopriorytetowy zostaje wyswapowany wsytuacji gdy nadejdzie proceswysokopriorytetowy do kolejki procesówgotowych; proces wysokopriorytetowy zostajezaładowany do pamięci i wykonany, a gdyskończy, to proces o niższym priorytecie możebyć sprowadzony do pamięci i wznowiony
Wymiana (c.d.)
☛ Głównym składnikiem czasu wymiany jest czastransferu (na dysk); całkowity czas transferujest proporcjonalny do ilości pamięciwyswapowanej
☛ Zmodyfikowana metoda wymiany jeststosowana w wielu systemach operacyjnychm.in. Unix, Linux, Windows; w normalnychwarunkach wymiana jest zabroniona, jednakgdy nagromadzenie procesów w pamięci osiągapewną wartość progową może mieć miejsce
Wymiana dwu procesów zużyciem pamięci pomocniczej
proces 1
proces 2
systemoperacyjny
przestrzeńużytkownika
pamięćoperacyjna
pamięćpomocnicza
wysłanie
sprowadzenie
Zastosowanie rejestrówsprzętowych do ochrony pamięci
rejestrgraniczny
rejestrprzemieszczenia pamięć
CPU < +
pułapka błądadresowania
adreslogiczny
adresfizyczny
tak
nie
Przydział ciągły
☛ Pamięć główna zwykle mieści:
☛ Rezydentny system operacyjny przechowywany zwykle wpamięci dolnej (ang. low memory) (wraz z wektoremprzerwań)
☛ Proces użytkownika przechowywany w pamięci górnej(ang. high memory)
☛
Przydział ciągły (c.d.)
☛ Wieloprogramowanie ze stałą liczbą zadań (ang.multiprogrammining with a fixed number oftasks - MFT)☛ Rejestr przemieszczenia (ang. relocation-register) jest
wykorzystany do do ochrony kodu użytkownika i systemuoperacyjnego
☛ Rejestr przemieszczenia zawiera wartość najmniejszegoadresu fizycznego; rejestr graniczny zawiera zakresadresów logicznych - każdy adres logiczny musi byćmniejszy od wartości rejestu granicznego
Przydział ciągły (c.d.)
☛ Wieloprogramowanie z zmienną liczbą zadań(ang. multiprogramming with a variable numberof tasks - MVT)☛ Dziura (ang. hole ) – blok dostępnej pamięci; dziury o
różnorodnej wielkości są porozrzucane po całej pamięcioperacyjnej
☛ Gdy proces staje się gotowy, alokuje pamięć z dziury wpamięci operacyjnej na tyle pojemnej aby sprostaćwymaganiom procesu
☛ System operacyjny zarządza:a) zaalokowanymi partycjami b) wolnymi partycjami(dziurami w pamięci)
Przydział ciągły (c.d.)
☛ przykładSO
Proces 5
Proces 8
Proces 2
SO
Proces 5
Proces 2
SO
Proces 5
Proces 2
SO
Proces 5
Proces 9
Proces 2
Proces 9
Proces 10
Przykład planowania
systemoperacyjny
2160 KB
2560 kB
400 kB
0 kB
600 kB P1
P2
P3
P4
P5
1000 kB
300 kB
700 kB
500 kB
kolejka zadań
proces pamięć czas
10
5
20
8
15
Przykład planowania (c.d.)
400 kB
1000 kB
2000 kB
2560 kB 2560 kB 2560 kB 2560 kB 2560 kB
2300 kB 2300 kB 2300 kB 2300 kB 2300 kB
2000 kB 2000 kB 2000 kB 2000 kB
1700 kB 1700 kB 1700 kB
1000 kB 1000 kB 1000 kB 1000 kB 900 kB
400 kB 400 kB 400 kB 400 kB
0 kB 0 kB 0 kB 0 kB 0 kB systemoperacyjny
systemoperacyjny
systemoperacyjny
systemoperacyjny
systemoperacyjny
P1
P2
P3
P1
P3
P1
P4
P3
P4
P3
P5
P4
P3
P2
kończy P1
kończy przydziel P4 przydziel
P5
Problem dynamicznegoprzydziału pamięci
☛ Pierwsze dopasowanie: (ang. first-fit) -przydziel pierwszą dziurę o wystarczającejwielkości
☛ Najlepsze dopasowanie: (ang. best-fit) -przydziel najmniejszą z dostatecznie dużychdziur; przejrzyj całą listę, chyba że jestuporządkowana według rozmiarów. Strategiata zapewnia najmniejsze pozostałości poprzydziale
Jak na podstawie listy wolnych dziur spełnić zamówienie na obszar o rozmiarze n
Problem dynamicznegoprzydziału pamięci (c.d.)
☛ Najgorsze dopasowanie: (ang. worst-fit) - przydziel największą dziurę; należyrównież przeszukać całą listę. Strategiata pozostawia po przydziale największądziurę, która może okazać się bardziejużyteczna niż pozostałość wynikająca zpodejścia polegającego na przydzialenajlepiej pasującej dziury
Symulacje wykazały, że first-fit i best-fit są lepsze od wyboruworst-fit zarówno pod wzglę dem zmniejszania czasu jak izużycia pamię ci.
Fragmentacja
☛ Fragmentacja zewnętrzna (ang. externalfragmentation) – suma wolnych obszarów wpamięci wystarcza na spełnienie zamówienia alenie tworzą one ciągłego obszaru
☛ Fragmentacja wewnętrzna ( ang. internalfragmentation) – zaalokowana pamięć jestnieznacznie większa od żądania alokacji pamięci;różnica ta stanowi bezużyteczny kawałekpamięci wewnątrz przydzielonego obszaru
Upakowanie pamięci - przykład
2560 kB
2300 kB
2000 kB
1700 kB
1000 kB 900 kB
400 kB
0 kB systemoperacyjny
P5
P4
P3
2560 kB
260 kB
1900 kB
1600 kB
900 kB
400 kB
0 kB systemoperacyjny
P5
P4
P3 300 kB
100 kB
660 kB
upakuj
Fragmentacja - (c.d.)
☛ Rozwiązanie problemu zewnetrznej fragmentacjito upakowanie (ang. compaction)☛ Przemieszczenie zawartości pamięci w taki sposów aby
cała wolna pamięć znalazła się w jednym wielkim bloku☛ Upakownie nie jest możliwe jeśli ustalanie adresów jest
statyczne ; jest możliwe jedynie jeśli ustalanie adresówjest dynamicznie wykonywane podczas działania procesu
☛ Problem we/wy☛ “Zamknij” zadanie w pamięci w czasie wykonywanie we/wy☛ Realizuj we/wy jedynie do buforów systemowych
Porównanie sposobówupakowania pamięci
300 kB
500 kB
600 kB
1200 kB
1000 kB
0 kB systemoperacyjny
P1
P2
P3
1500 kB
1900 kB
2100 kB
P4
300 kB
500 kB
600 kB
1200 kB
800 kB
0 kB systemoperacyjny
P1
P2
P3
2100 kB
P4
300 kB
500 kB
600 kB
1200 kB
1000 kB
0 kB systemoperacyjny
P1
P2
P3
2100 kB
P4
300 kB
500 kB
600 kB
0 kB systemoperacyjny
P1
P2
P3
1500 kB
1900 kB
2100 kB
P4
przydziałpoczątkowy
przemieszczono 600kB
przemieszczono 400kB
przemieszczono 200kB
Stronicowanie (ang. Paging)
☛ Logiczna przestrzeń adresowa procesu może byćnieciągła tj. procesowi można przydzielaćdowolne dostępne miejsca w pamięci fizycznej
☛ Pamięć fizyczną dzieli się na bloki stałej długościzwane ramkami (ang. frames) (rozmiar jestpotęgą 2, między 512B a 16MB)
☛ Pamięć logiczną dzieli się na bloki tego samegorozmiaru zwane stronami (ang. pages)
☛ Pamiętana jest lista wolnych ramek
Przykłady stron
☛ Altlas 512 48b słów☛ Honeywell-Multics 1024 36b słów☛ IBM 370/XA i 370/ESA 4kB☛ VAX 512B☛ IBM AS/400 512B☛ DEC Alpha 8kB☛ MIPS 4kB -> 16MB☛ UltraSPARC 8kB -> 4MB☛ Pentium 4kB -> 4MB☛ PowerPC 4kB
Stronicowanie (c.d.)
☛ Wykonanie procesu o rozmiarze n stron wymagaznalezienia n wolnych ramek i załadowanie wnie procesu
☛ Utworzenie tablicy stron (ang. page table) doodwzorowywania adresów logicznych nafizyczne
☛ Eliminiuje się fragmentację zewnętrzna ale możepowstać fragmentacja wewnętrzna☛ proces 72766B = 35 stron 2048B + 1086 B -> 36 ramek ->
fragmentacja wewnętrzna = 2048 B - 1086 B = 926 B
Schemat Translacji Adresu
☛ Stronicowanie wymaga wsparcia sprzętowego☛ Adres wygenerowany przez CPU jest dzielony na
dwie części:☛ Numer strony (ang. Page number) (p) – używany jako
indeks w tablicy stron zawierającej adresy bazowewszystkich stron w pamięci fizycznej
☛ Odległość na stronie (ang. Page offset ) (d) – w połączeniuz adresem bazowym definuje fizyczny adres pamięciposyłany do jednostki pamięci
Architektura sprzętustronicującego
CPU p d f d
f
f0000....0000
f1111....1111
p
f
adreslogiczny
adresfizyczny
pamięćfizyczna
tablica stron
Model stronicowania pamięcilogicznej i fizycznej
pamięćfizyczna
tablica stron pamięć
logiczna
strona 0
strona 1
strona 2
strona 3
strona 0
strona 2
strona 1
strona 3
1
0
2
3
1
4
3
7
0
1
2
3
4
5
6
7
numer ramki
Adres logiczny
☛ logiczna przestrzeń adresowa = 2^m☛ rozmiar strony = 2^n (B lub słów)☛ adres logiczny = (nr strony, odległość )
☛ nr strony ≤ 2^(m-n)☛ odległość = 2^n
☛ Przykład (minimalny):☛ strona rozmiaru 4 słów☛ pamięć fizyczna = 32 słowa = 8 stron
Przykład minimalny
tablica stron
pamięćlogiczna
pamięćfizyczna
0
0
1 2 3
4 8 12 16 20 24 28
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
a b c d
a b c d
e f g h
e f g h
i j k l
i j k l
m n o p
m n o p
5 6 1 2
Przydział wolnej ramki
tablica stronnowego procesu
lista wolnych ramek
20
21
19
18
17
16
15
14
13 13
14
15
16
17
18
19
20
1514131820
strona 0 strona 0 strona 1 strona 1 strona 2 strona 2 strona 3 strona 3
nowy proces nowy proces
lista wolnych ramek
strona 0
strona 1
strona 2
strona 3
21 0 1 2 3
14 13 18 20
15
Implementacja Tablicy Stron (1)
☛ Tablicę stron przechowuje się w pamięcioperacyjnej
☛ Rejestr bazowy tablicy stron (ang. Page-tablebase register - PTBR) wskazuje położenie tablicystron
☛ Rejestr długości tablicy stron (ang. Page-tablelength register - PTLR) wskazuje rozmiar tablicystron; zwartość ta jest badana w celusprawdzenia czy dany adres jest dozwolny
Implementacja Tablicy Stron (2)
☛ Schemat ten wymaga dwóch kontaktów zpamięcia w celu uzyskania dostępu do bajtu -jeden do wpisu do tablicy stron, drugi dodanego bajtu. W większości przypadków takieopóźnienie jest nie do zaakceptowania
☛ Problem ten rozwiązuje się za pomocąspecjalnej, małej i szybko przeszukiwanej,sprzętowej pamięci podręcznej zwanejrejestrami asocjacyjnymi (ang. associativeregisters ) lub buforami translacji adresówstron (ang. translation look-aside buffers -TLBs)
Sprzęt stronicujący z TLB
CPU p d
f d
f
f0000....0000
f1111....1111
p
adreslogiczny
adresfizyczny
pamięćfizyczna
f numer strony
numer ramki
trafienie TLB
chybienie TLB
TLB
tablica stron
Rejestry asocjacyjne
☛ Równoległe wyszukiwanie
Translacja adresu (A´, A´´)☛ Jeśli A´ jest w rejestrze asocjacyjnym to weź
odpowiadający mu numer ramki☛ W przeciwnym razie weź numer ramki z tablicy stron
Nr strony Nr ramki
Efektywny czas dostępu dopamięci (EAT)☛ Przeglądnięcie rejestrów asocjacyjnych = ε
jednostek czasu☛ Niech cykl pamięci wynosi 1 jednostkę czasu☛ Współczynnik trafień (ang. hit ratio) – procent
numerów stron odnajdowywanych w rejestrachasocjacyjnych; współczynnik zależy od liczbyrejestrów asocjacyjnych
☛ Współczynnik trafień = α☛ Effective Access Time (EAT)
EAT = (1 + ε) α + (2 + ε)(1 – α)= 2 + ε – α
Ochrona pamięci
☛ Ochrona pamięci jest zaimplementowana zapomocą bitów ochrony przypisanych każdejramce
☛ Bit poprawności (ang. Valid-invalid bit) - każdywpis w tablicy stron zostaje uzupełniony ododatkowy bit:☛ “poprawny” (“valid” ) oznacza, że strona, z którą jest on
związany, znajduje się w logicznej przestrzeni adresowejprocesu, a więc jest ona dozwolona (ang. legal page)
☛ “niepoprawny” (“invalid” ) oznacza, że strona nie należydo logicznej przestrzenia adresowej procesu
Bit poprawności lubniepoprawności
bitpoprawności
tablica stron
strona 0
strona 1
strona 2
strona 3
strona 0
strona 2
strona 1
strona 3
1
0
2
3
2
4
3
2
3
4
5
6
7
8
9
numer ramki
strona 4
strona 5
4
5
6
7
strona 4
strona 5
7
8
9
0
0
v
v
v
v
v
v
i
i
0
10,468
12,287
Stronicowanie wielopoziomowe
☛ Logiczna przestrzeń adresowa na 32- bitowejmaszynie z rozmiarem strony 4KB (2^12)powoduje, że tablica stron może zawierać domiliona wpisów (2^32/2^12)
☛ Ponieważ każda pozycja w tablicy stron ma 4Bwięc każdy proces może wymagać do 4MBfizycznej przestrzeni adresowej na samą tylkotablicę stron
☛ Jednym z rozwiązań jest stronicowaniewielopoziomowe
Przykład dwupoziomowegostronicowania (1)
☛ Logiczna przestrzeń adresowa na 32-bitowej maszynie z rozmiarem strony 4Kjest podzielona na:☛ 20-bitowy numer strony☛ 12-bitowa odległość na stronie
☛ Ponieważ dzielimy tablicę stron na strony,numer strony podlega dalszemupodziałowi na:☛ 10-bitowy numer strony☛ 10-bitowa odległość na stronie
Schemat dwupoziomowejtablicy stron
tablica stron
pamięć
zewnętrzna tablica stron
0
1
500
500
708
100
100
1
708
929
900
stronatablicy stron
900
929
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Przykład dwupoziomowegostronicowania (2)
☛ Adres logiczny przyjmuje więc postać:
gdzie p1 jest indeksem do zewnętrznejtablicy stron, a p2 oznacza przesunięciena stronie tej tablicy
numer strony odległość na stronie
p1 p2 d10 10 12
Tłumaczenie adresu w 32bdwupoziomowej architekturze
stronatablicy stron
zewnętrzna tablica stron
p2
p2
p1
p1
d
d
adres logiczny
Stronicowanie wielopoziomowea wydajność
☛ Ponieważ każdy poziom jest zapamiętany jakoosobna tablica w pamięci więc przekształcenieadresu logicznego na fizyczny może wymagać ażczterech dostępów do pamięci
☛ Zwiększyliśmy więc pięciokrotnie czas potrzebnydo wykonania jednego dostępu do pamięci,zastosowanie pamięci podręcznej pozwalautrzymać wydajność w rozsądnych granicach
Stronicowanie wielopoziomowea wydajność (c.d.)
☛ Dla współczynnika α = 0.98, ε = 20 ns i czasudostępu do pamięci 100 ns otrzymujemy:effective access time = 0.98 x 120 + 0.02 x 520
= 128 nanosekund.
Co stanowi jedynie 28-procentowe wydłużenieczasu dostępu do pamięci mimo dodatkowychpoziomów przeszukiwania tablic
Haszowane tablice stron
☛ Przestrzeń adresowa > 32 bitów?☛ Numer strony pamięci wirtualnej jest odwzorowany
(ang. hashed ) przy pomocy funkcji haszującej napozycje w tablicy (ang. hashed page table)
☛ Wszystkie strony wirtualne którym odpowiada tasama pozycja w tablicy (kolizja) zostająumieszczone na jednej liście (metoda łańcuchowa)
☛ Element listy: numer strony wirtualnej (p), numerstrony pamięci (r), wskaźnik do następnegoelementu listy
Haszowanie - przykłady☛ Osiem pozycji w tablicy z haszowaniem o
etykietach: 0,1,2,3,4,5,6,7 (długość tablicy M=8)☛ Modularna funkcja haszująca - reszta z dzielenia
przez 8☛ Rozwiązywanie kolizji
☛ liniową (ang. linear rehashing)☛ metodą łańcuchową (ang. overflow with chaining )
☛ Średni długość przeszukania tablicy długości Mjednego z N elementów☛ liniowe haszowanie: 2 - 2N/M☛ łańcuchowe: 1+ (N-1)/2M
☛
Haszowanie liniowe
0
1
2
3
4
5
6
7
119
-
50
51
74
83
-
95
wartość (119)
wartość (50)
wartość (74)
wartość (83)
50
51
74
83
95
119
wartość (51)
wartość (95)
Haszowanie łańcuchowe
50
51
74
83
95
wartość (50) wartość (74)
wartość (83)
50
51
74
83
95
119
wartość (51)
wartość (95)
94
139
wartość (94)94
119 wartość (119)
wartość (139)139
hash table overflow table
.
.
.
.
-
-
--
Wyszukiwanie adresu strony wtablicy z haszowaniem
hash table
pamięćfizyczna
adresfizyczny
adres logiczny
funkcjahaszująca
p
p
d d r
r q s . . .
Odwrócona tablica stron☛ Odwrócona tablica stron (ang. inverted page
table) ma po jednej pozycji dla każdejrzeczywistej strony pamięci (ramki)
☛ Każda pozycja zawiera adres wirtualny stronyprzechowywanej w ramce rzeczywistej pamięcioraz informacje o procesie posiadającym stronę
☛ Zmniejsza się rozmiar pamięci potrzebnej dopamiętania wszystkich tablic stron, jednakzwiększa się czas potrzebny do przeszukaniatablicy przy odwołaniu do strony☛ tablica haszowania (ang. hash table) - ogranicza szukanie
do jednego lub najwyżej kilku wpisów w tablicy stron
Odwrócona tablica stron
tablica stron
ppid CPU d d i
i
pid p
adresfizyczny
pamięćfizyczna
adres logiczny
wyszukiwanie
Strony dzielone
☛ Dzielenie kodu☛ Jedna kopia kodu nie modyfikującego samego siebie tj.
wznawialnego (ang. reentrant) jest dzielona pomiędzyprocesy (np. editory tekstu, kompilatory, system okien)
☛ Kod dzielony musi być widziany pod tą samą lokacją wlogicznej przestrzeni adresowej dla wszystkich procesów
☛ Kod prywatny i dane☛ Każdy proces ma własną kopie kodu i danych☛ Strony dla prywatnego kodu i danych mogą się pojawić w
dowolnym miejscu logicznej przestrzeni adresowej
Dzielenie kodu w środowiskustronicowanym
0
1
2
3
4
5
6
7
8
9
10
11
3 4 6 1
3 4 6 7
3 4 6 2
tablica stron procesu P2
tablica stron procesu P3
tablica stron procesu P1
proces P2
proces P1
proces P3
ed 2
ed 3
ed 1
ed 2
ed 3
ed 1
ed 2
ed 3
dane 1
dane 1
dane 3
dane 3
dane 2 dane 2
ed 1
ed 3
ed 2
ed 1
Segmentacja
☛ Segmentacja (ang. segmentation) to schematzarządzania pamięcią który urzeczywistniasposób widzenia pamięci przez użytkownika
☛ Program jest zbiorem segmentów czylijednostek logicznych takich jak:
program główny,procedura,funkcja,zmienne lokalne, zmienne globalne,common block,stos, tablica symboli, arrays
Program z punkty widzeniaużytkownika
stos podprogram
tablicasymboli
program główny
funkcja sqrt
logicznaprzestrzeńadresowa
Filozofia segmentacji
stos podprogram
tablicasymboli
program główny
pamięćfizyczna
stos
podprogram
tablicasymboli
program główny logiczna
przestrzeńadresowa
Adres logiczny - segmentacja
☛ <numer segmentu, odległość>☛ Program użytkownika jest tłumaczony za
pomocą kompilatora, który automatyczniekonstruuje segmenty odpowiadająceprogramowi
☛ Kompilator języka Pascal wytwarza segmenty☛ (1) zmienne globalne☛ (2) stosu wywołań procedur☛ (3) kod funkcji i procedur☛ (4) lokalne zmienne funkcji lub procedury
☛ Program ładujący przydziela numery segmentów
Sprzęt do segmentacji
pamięć fizyczna
s
granica baza
s d CPU
< + tak
nie
tablica segmentów
pułapka: błąd adresacji
Przykład segmentacji
podprogram
logicznaprzestrzeńadresowa
stos
segment 0
segment 0 segment 3
segment 4
segment 1 segment 2
segment 3
segment 2
segment 4
segment 1
granica baza
1000 1400 400 6300
4300 4001100 32001000 4700
1400
2400
3200
4300
4700
5700
63006700
tablicasegmentów
fiz
yczn
a pr
zest
rzeń
adr
esow
a
tablica symboli
funkcja sqrt
program główny
Implementacja segmentacji (1)
☛ Adres logiczny składa się z dwu części :<numer-segmentu, odległość w segmencie>,
☛ Tablica segmentów (ang. segment table )– jestwykazem par:
☛ bazy – zawiera początkowy fizyczny adres segmentu wpamięci
☛ granica – oznacza długość segmentu
Implementacja segmentacji (2)
☛ Rejestr bazowy tablicy segmentów (ang.Segment-table base register -STBR) wskazuje natablicę segmentów w pamięci
☛ Rejestr długości tablicy segmentów (ang.Segment-table length register -STLR) oznaczaliczbę segmentów przypadających na program;
numer segmentu s jest poprawny jeśli s < STLR.
Implementacja segmentacji (3)
☛ Relokacja☛ dynamiczna☛ za pomocą tablicy segmentów
☛ Dzielenie☛ segmenty dzielone☛ ten sam numer segmentu
☛ Alokacja☛ first fit/best fit☛ fragmentacja zewnętrzna
☛ upakowanie możliwe w dowolnej chwili
Dzielenie segmentów wpamięci segmentowanej
segment 0
segment 1
segment 0
segment 1
editor
editor
editor
dane 1
dane 2
dane 2
dane 1
granica baza
granica baza
tablicasegmentówprocesu P2
tablicasegmentówprocesu P1
pamięć logicznaprocesu P2
pamięć fizyczna
25286 430624425 68348
25286 43062 8850 90003
43062
68348
72773
90003
98553
pamięć logicznaprocesu P1
1
0
1
0
Implementacja segmentacji (4)
☛ Ochrona. Z każdym elementem tablicysegmentów stowarzyszamy:☛ validation bit = 0 ⇒ segment niepoprawny☛ uprawnienia read/write/execute
☛ Bity ochrony dołączone do każdego segmentu;dzielenie kodu ma miejsce na tym samympoziomie
☛ Segmenty mają zmienną długość - problemdynamicznej alokacji pamięci
Segmentacja zestronicowaniem – MULTICS
☛ MULTICS rozwiązuje problemy fragmentacjizewnętrznej i długich czasów przeszukiwańpoprzez stronicowanie segmentów
☛ Rozwiązanie to różni się od czystej segmentacjitym, że pozycja w tablicy segmentów niezawiera adresu bazowego lecz adres bazowytablicy stron dla tego segmentu
Segmentacja zestronicowaniem – Intel 386
☛ Intel 386 (i późniejsze) stosuje segmentację zestronicowaniem do zarządzania pamięcią zdwupoziomowym schematem stronicowania
☛ Maksymalna liczba segmentów w procesie 16K☛ Każdy segment mniejszy niż 4GB☛ Rozmiar strony 4KB
Segmentacja – Intel 386 (c.d.)
☛ Przestrzeń adresowa ma dwie strefy zawierającepo co najwyżej 8KB segmentów☛ prywatne segmenty procesu przechowywane w tablicy
lokalnych deskryptorów (ang. local descriptor table -LDT)☛ każda pozycja w LDT ma 8B
☛ wspólne segmenty procesów przechowywane w globalnejtablicy deskryptorów (ang. global descriptor table - GDT)
☛ selektor jest 16b liczbą☛ 13b - numer segmentu☛ 1b - czy segment jest w LDT czy w GDT☛ 2b - ochrona
☛ każdy adres logiczny jest parą (selektor, odległość)
Segmentacja - Intel 386 (c.d.)
☛ Procesor ma 6 rejestrów segmentów dozaadresowania 6 segmentów oraz 6 rejestrówmikroprogramowych (8b) do przechowywaniapozycji z LDT i GDT
☛ Adres fizyczny ma 32b☛ rejestr wyboru wskazuje na pozycję w LDT lub GDT☛ na podstawie adresu początku segmentu i jego długości
tworzony jest adres liniowy (ang. linear address)☛ sprawdzenie poprawności ze względu na długość segmentu
☛ jeśli adres jest poprawny to odległość dodaje się dowartości bazowej
Segmentacja - Intel 386 (c.d.)
☛ W procesorze 386 przyjęto stronicowaniedwupoziomowe☛ adres liniowy składa się z
☛ 20b numeru strony☛ 10b wskaźnik do katalogu stron☛ 10b wskaźnik do tablicy stron
☛ 12b odległość na stronie
☛
Intel 30386-tłumaczenie adresuselektor offset
deskryptor segmentu
adres fizyczny
wpis katalogowy pozycja tablicy stron
offsetstronakatalog
adres logiczny
ramka strony
adres liniowy
tablica deskryptorów
katalog stron tablica stron
rejestr bazowy katalogu stron
+
Ustalanie wielkości pamięci
☛ pagesize☛ AIX
☛ lsattr -HE -l sys0 -a realmem☛ FreeBSD
☛ grep memory /var/run/dmesg.boot☛ HP-UX
☛ dmesg | grep Phys☛ Linux
☛ free☛ Solaris
☛ dmesg | grep mem☛ True64
☛ vmstat | grep ‘^Total’
Monitorowanie wykorzystaniapamięci
☛ vmstat☛ memory - swap lub free☛ page
☛ re - liczba przywołanych stron pamięci☛ pi - liczba wczytanych stron☛ fr - liczba stron zwolnionych☛ po - liczba wypisanych stron
☛ top☛ KDE System Guard (ksysguard)
Wyświetlanie obszarówstronicowania☛ AIX
☛ lsps -a☛ FreeBSD
☛ pstat -s☛ HP-UX
☛ swapinfo -t -a -m☛ Linux
☛ cat /proc/swaps☛ swapon -s ; free -m -o
☛ Solaris☛ swap -l
☛ True64☛ swapon -s
Obszary stronicowania
☛ AIX w pliku /etc/swapspaces☛ FreeBSD w pliku /etc/fstab☛ HP-UX w pliku /etc/fstab☛ Linux w pliku /etc/fstab☛ Solaris w pliku /etc/vfstab☛ True64 w pliku /etc/sysconfigtab
Podsumowanie
☛ Algorytmy zarządzania pamięcią☛ przydział ciągły☛ stronicowanie☛ segmentacja☛ połączenie stronicowania i segmentacji
☛ Wybór algorytmu zależy od sprzętu☛ Aspekty które należy brać pod uwagę przy
porównywaniu strategii zarządzania pamięcią☛ Wspomaganie sprzętowe - rejestr bazowy i graniczny
(schemat z pojedyńczymi obszarami), segmentacja istronicowanie ( tablice do odwzorowywanie adresów)
Podsumowanie (c.d.)
☛ Wydajność - segmentacja i stronicowanie mogą miećzaimplementową tablicę w szybkich rejestrach
☛ Fragmentacja - wewnętrzna (stałe jednostki przydziału) izewnętrzna (zmienne jednostki przydziału)
☛ Przemieszczanie - upakowanie likwiduje fragmentacjęzewnętrzną (program jest przesuwany w pamięci)
☛ Wymiana - pozwala na zwiększenie liczby procesów☛ Wspólne użytkowanie - wymaga stronicowania lub
segmentacji oraz starannego zaprojektowania☛ Ochrona - różne sekcje programu mogą być określone jako
wyłącznie do czytania, wykonywania lub czytania i pisania