zbigniew s. szewczak podstawy systemów operacyjnychzssz/pso2004/w9.pdftoruń, 2004 zbigniew s....

88
Toruń, 2004 Zbigniew S. Szewczak Podstawy Systemów Operacyjnych Wykład 9 Zarządzanie pamięcią.

Upload: vuanh

Post on 01-Mar-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

Toruń, 2004

Zbigniew S. Szewczak Podstawy Systemów Operacyjnych

Wykład 9

Zarządzanie pamięcią.

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