10. přednáška (24. 4. 2014)
Download
Report
Transcript 10. přednáška (24. 4. 2014)
10. přednáška
24. 4. 2014
-
memory management
adresové prostory
relokace
blokové přidělování
alokační strategie
Buddy System
stránkování
segmentace
virtuální paměť
Studijní materiály najdete na adrese:
http://www.uai.fme.vutbr.cz/~vdumek/
Memory Management
- sledování stavu každého místa v operační
paměti (přiděleno, volné)
- určování strategie přidělování paměti (komu,
která část, kdy, v jakém rozsahu, ...)
- realizace přidělení paměti (zvolení příslušného
paměťového místa, aktualizace informací o přidělení)
- realizace uvolnění paměti (proces sám, odebrána
násilně, aktualizace informací)
Cache paměť
CPU
Word Transfer
Cache
Block Transfer
Main memory
- drahá a velmi rychlá paměť
- kontakt s pomalejší a větší hlavní pamětí
- OS a uživatelské procesy ji nevidí
- je v interakci s HW správy paměti (MMU)
- hledání odkazovaného slova v cache
- při neúspěchu přesun dalšího bloku dat
- prostorová lokalita
la0
la1
procesor
lan
DAT - MMU
Adresové prostory RAM
LAP
Logický adresový prostor
fa0
fa1
RAM
fan
FAP
Fyzický adresový prostor
LAP - logické adresy, instrukční
soubor procesoru
FAP - fyzické adresy, HW řešení
DAT - Dynamic Address
Translation
MMU - Memory Management
Unit
správa adresových prostorů
(oddělení LAP a FAP pro
jednotlivé procesy, rozdělení FAP
pro LAP)
Zobrazení LAP do FAP relokací
0
RR
LAP OS
0 1000 1200
nevyužito
- zachování spojitosti LAP ve FAP
- DAT – relokační registr RR
- obraz RR je součástí PCB
- LAP -> FAP se provádí
dynamicky za běhu
0
AP1
nevyužito
AP1
LAP1
AP2
0
AP2
nevyužito
nevyužito
FAP
LAP2
Blokové přidělování
Fragmentace paměti – hlavní nevýhoda, důsledek přidělování nestejně
velkých bloků paměti a jejich uvolňování v různých okamžicích, pro omezení
externí fragmentace se přidělují stejně veliké bloky (zvýšení režie), spojování
více bloků, pro úplné zamezení - uvolňování v opačném pořadí než se alokuje,
nepřijatelný diktát chování procesů, některé procesy si OP potřebují držet
stále, drasticky by se snižovala průchodnost OS, musí být vnitřní věcí správce
OP.
Externí fragmentace – dost volné paměti, není dostupná v souvislé díře
Interní fragmentace – přidělená oblast je větší, než bylo požadováno
Redukce externí fragmentace – slučování nesousedních děr posuvem
obsazených oblastí (bliter). Při přesouvání bloků dat je nutné zachování
transparentnosti pro procesy - požadavek na překlad adres, pokud je k
dispozici, není důvod nepoužít virtualizaci - virtuální paměť.
strategie pro jednoduché OS nebo jednorázové a krátkodobé úkoly, proces
musí vědět, kolik OP potřebuje a explicitně si ji vyžádat (požadavek je buď
akceptován, nebo odmítnut), je třeba udržovat informace o vlastnících bloků,
o volných blocích (tabulky s informacemi), potřebná znalost délky bloku,
adresa dalšího bloku nemusí být explicitně uvedena (bloky navazují)
Odstranění fragmentace - setřásání
P1
volná
P1
fragmentováno
P2
defragmentováno
P2
volná
P3
volná
P4
P3
P4
volná
Blokové přidělování
Informace o blocích v datových strukturách správce, potřeba další paměti a zvýšení
režie, počet bloků předem neznáme, řešením je přidělení většího bloku, do volného
místa uložit informace o samotném bloku i o adrese následujícího. Nevýhodou je
promíchání systémových informací a paměťových bloků. Při nedokonalé ochraně
paměti hrozí zhroucení OS.
Informace v bloku
Informace ve zvláštní struktuře
Proces1
Další blok
Proces1
15KB
Proces1
Data P1
Proces2
Proces2
10KB
Proces3
25KB
Proces2
Proces3
Další blok
Data P2
Blokové přidělování
Pevná velikost přidělovaných bloků – umožňuje umístění procesu menšího nebo
stejného, pokud jsou všechny bloky obsazené je možné paměťové požadavky (procesy)
odkládat
8 MB
8 MB
2 MB
8 MB
bloky stejné velikosti
8 MB
8 MB
8 MB
8 MB
8 MB
8 MB
8 MB
4 MB
8 MB
- statické přidělování
- nezáleží na tom, který blok se
použije (jsou stejné)
- nabízený prostor je nedostatečný,
nutnost zavedení překryvů
- využití paměti je extrémně
neefektivní
- i malý požadavek čerpá celý blok
- vzniká interní fragmentace
bloky nestejné velikosti
8 MB
12 MB
16 MB
- dynamické přidělování
- existují dvě možnosti čerpání
bloků
Způsob obsazení bloků
- jedna fronta procesů pro každý blok – pro každý blok je jedna plánovací fronta procesů, výhodou
je omezení interní fragmentace
- jedna fronta procesů pro všechny bloky – možnost stanovit preferenci mezi odkládáním malých
procesů a jejich umístění ve větším prostoru (zvýšení interní fragmentace versus zvýšená průchodnost
operačního systému)
8 MB
8 MB
2 MB
2 MB
4 MB
4 MB
8 MB
8 MB
8 MB
nové
procesy
nové
procesy
8 MB
12 MB
12 MB
16 MB
16 MB
Blokové přidělování
Díra – blok dostupné paměti, díry mají různý rozměr, jsou roztroušeny po FAP, při
vzniku procesu se procesu přidělí dostatečně velká díra, OS udržuje informaci o
přidělených oblastech a dírách
OS
OS
OS
OS
proces 5
proces 5
proces 5
proces 5
proces 8
volné
proces 9
proces 9
volné
proces 10
volné
proces 2
proces 2
proces 2
proces 2
volné
volné
volné
volné
Alokační strategie
First fit - přidělí oblast v první díře, která má dostatečnou velikost, zbytek je novou dírou, jednoduchá,
rychlá, nemá vliv na fragmentaci
Best fit - přidělí oblast v nejmenší díře, která má ještě dostatečnou velikost, mírně omezuje
fragmentaci, pomalá, větší režie, zanechává malé díry, šetří velké díry pro velké požadavky
Worst fit – přidělí oblast v největší díře, pomalá, zanechává největší díru
Last fit – obsazuje paměť od nejvyšších adres, někdy výhodný způsob (místo pro zásobník)
Next fit – prohledává paměť za posledním umístěním
Quick fit – informace o dírách je udržována v několika oddělených seznamech, každý obsahuje
informace o dírách, jejichž velikost je v určitém intervalu, rychlé nalezení díry
first fit
poslední alokovaný
best fit
Poslední
alokovaný
volný
worst fit
nově alokovaný
next fit
last fit
Systém „blíženců“
- zajímavým kompromisem mezi statickým a dynamickým přidělováním bloků
je tzv. „Buddy System“ (Unix SVR4). Dostupné jsou paměťové bloky o velikosti
2K, L <= K <= U, kde představuje:
2L – nejmenší velikost alokovaného bloku
2U – největší velikost alokovaného bloku (dostupná paměť)
Řešení požadavku na přidělení bloku o velikosti S:
- začne se s celým blokem velikosti 2U. Jestliže platí 2U-1 < S < 2U, přidělí se celý
blok délky 2U, jinak se blok rozdělí na dva „blížence“ o rozměrech 2U-1. Jestliže
platí 2U-2 < S < 2U-1, přidělí se jeden z blíženců, jinak opět dojde k rozdělení.
Postup se opakuje, dokud se nezíská nejmenší možný blok s velikostí větší nebo
rovnou s požadavkem S. Jakmile se „blíženci“ uvolní, tak splývají.
Operační systém udržuje několik seznamů děr:
- i-tý seznam je seznam děr o velikosti 2i
- kdykoliv se v (i+1) seznamu vyskytne pár „blíženců“, jsou z (i+1) seznamu
odstraněny, sloučeny a vloženy do i-tého seznamu. Když se požaduje oblast o
velikosti k, kde 2i+1 < k < 2i, nejprve se zkoumá i-seznam a je-li prázdný,
zkoumá se (i+1) seznam ...
Buddy System
1M
Req. A – 100K
A - 128K
128K
256K
512K
Req. B – 240K
A - 128K
128K
B - 256K
512K
Req. C – 62K
A - 128K C 64K 64K
B - 256K
512K
Req. D – 256K
A - 128K C 64K 64K
B - 256K
D - 256K
256K
Rel. B
A - 128K C 64K 64K
256K
D - 256K
256K
C 64K 64K
256K
D - 256K
256K
Req. E – 75K
E - 128K C 64K 64K
256K
D - 256K
256K
Rel. C
E - 128K
256K
D - 256K
256K
D - 256K
256K
Rel. A
128K
128K
512K
Rel. E
1M
volná
přidělená
Stránkování
RAM
logická adresa
p
d
procesor
f
d
fyzická adresa
p
f
LAP se dělí na logické stránky, FAP na fyzické stránky (frame), oboje má pevnou
délku, délka je mocninou 2, zobrazení LAP do FAP se děje pomocí tabulky stránek,
technika trpí vnitřní fragmentací, logickou adresu generuje procesor, číslo stránky
(p – index do tabulky stránek, indexovaný řádek obsahuje číslo rámce f), offset (d –
adresa ve stránce, dohromady s f tvoří fyzickou adresu), použito u virtuální paměti
Stránkování paměti
- metoda, jak se vyrovnat s externí fragmentací, logická adresa
(použita v programu) má dvě složky (číslo stránky a offset), velikost
stránky bývá v KB (při velikosti 4 KB je pro offset potřeba 12 bitů,
spodních 12 bitů je offset, zbytek je pro číslo stránky, číslo stránky
se použije jako index do tabulky stránek (každý proces má svoji
vlastní), v tabulce stránek je uvedeno číslo rámce ve fyzické paměti,
k tomuto rámci se připojí offset => fyzická adresa, výhodou je
odstranění externí fragmentace, není nutné přemísťování bloků v
paměti, poslední stránka procesu trpí interní fragmentací, je potřeba
hardwarová podpora, tabulka stránek může být extrémně velká (pro
32 b., 4 KB stránka, 1 milión stránek, tolik položek bude mít PT),
každý proces potřebuje svoji vlastní tabulku stránek (každý má svůj
virtuální adresový prostor)
Jednoúrovňová tabulek stránek
virtuální
adresa
Page
Offset
Page Table Base Register
+
V=0 bit platnosti,
stránka není v
paměti (page
fault)
fyzická
adresa
V
Access rights
Frame
Page Table je umístěna ve fyzické paměti, 32 bitový virtuální
prostor bude mít při velikosti stránky 4 KB pro offset 12 bitů a pro
stránku 20 bitů, tabulka stránek je příliš velká (4 MB pro tabulku
stránek pro jeden proces), používá se víceúrovňové stránkování
Příklady stránkování
Proces A
0
A0
1
A1
2
A2
3
A3
4
B0
4
D0
5
B1
5
D1
6
B2
6
D2
7
C0
8
C0
9
C0
10
C0
11
D3
12
D4
13
14
0
1
2
3
0
1
2
3
Proces B
0
1
2
-
Proces D Free frame list
Proces C
0
1
2
3
7
8
9
10
0
1
2
3
4
4
5
6
11
12
- proces D nezabírá souvislou oblast
- nedochází k externí fragmentaci
- vnitřní fragmentace je problém poslední
stránky procesu
- OS udržuje PT pro každý proces
- zmenšování délky stránky – minimalizace
vnitřní fragmentace, prodlužování PT
13
14
Překlad adres - stránkování
Virtuální adresa
Page
Fyzická adresa
Offset
Frame
Offset
Registr
Page table ptr
Page table
n bitů
Offset
Page
frame
+
Program
page
m bitů
Frame
Operační paměť
Stránkovací mechanismus
Stránkování s TLB
Virtuální adresa
Page
Fyzická adresa
Offset
Frame
Offset
Registr
Offset
Page table ptr
n bitů
Page table
TLB
+
page
page
page
page
page
frame
frame
frame
frame
frame
Program
Page
frame
m bitů
Frame
Operační paměť
stránka v TLB (Translation
Look-aside Buffer) nalezena
(tzv. TLB hit)
Stránkovací mechanismus
Doba přístupu do paměti s TLB
Skutečná přístupová doba – Effective Access Time (EAT)
Přístupová doba do fyzické paměti = t
Přístup do TLB = e
„Hit Ratio“a – pravděpodobnost nalezení stránky v TLB
EAT = (e + t) a + (e + 2t)(1 – a) = (2 – a)t + e
Příklad pro t = 100 ns
a = 0%
EAT = 200 ns
Bez TLB
e = 20 ns
a = 60%
EAT = 160 ns
Zrychlení přístupu
e = 20 ns
a = 80%
EAT = 140 ns
Zrychlení přístupu
e = 20 ns
a = 98%
EAT = 122 ns
Zrychlení přístupu
Segmentace paměti
Segmentace paměti: - fyzická adresa se získává z páru segment +
offset, obsah segment registru nastavuje OS, pro uživatelský
program je nepřístupný, adresní prostor každého procesu začíná na
hodnotě 0, odpadají problémy s relokací, rozdělení na segmenty
odpovídá struktuře paměťového prostoru procesu (kód, konstanty,
proměnné, zásobník, halda), procesy řízené stejným programem
mohou sdílet kód programu a konstanty, je možné dynamické
přemísťování segmentů za běhu procesu, možnost dodatečného
zvětšování adresového prostoru, možnost sdílení segmentů, není
nutné provádět relokaci programu, nevýhodou je, že součet nároků
procesů <= velikost paměti (odkládání segmentů na disk – může
být časově náročné), nutná hardwarová podpora segmentace, pro
odstranění fragmentace se užívá setřásání segmentů, k ochraně se
užívá mezní registr na číslo segmentu (segmenty mají různou
délku)
Segmentace paměti
operační paměť
segment
offset
Segment A
base
limit
base
limit
base
limit
base
limit
base
limit
base
limit
base
limit
base
limit
Segment B
Segment C
fyzická adresa
Srovnání adresování
Segment 0
750 bytes
Page 2
Page 1
Uživatelský proces
2700 bytes
logická adresa: Segment=1 Offset=752
Segment 1
1950 bytes
logická adresa: Page=1 Offset=478
Page 0
relativní adresa: 1502
0000010111011110
Blokové přidělování
0000010111011110
Stránkování (stránka 1K)
0001001011110000
Segmentace
Převod logické adresy na fyzickou
16 bitů logické adresy
0000010111011110
Offset
Stránka
Stránkování
0 000101
1 000110
2 011001
0001100111011110
Process
page table
0001001011110000
16 bitů fyzické adresy
16 bitů logické adresy
0 0010111011100000010000000000
1 0111100111100010000000100000
Segmentace
Process segment
table
+
0010001100010000
16 bitů fyzické adresy
Virtuální paměť
- virtualizace je nejdokonalejší strategie správy paměti, musí být k
dispozici MMU - jednotka řízení paměti
- zajišťuje transparentnost paměti pro procesy
Nutné podmínky pro realizaci virtuální paměti:
- schopnost procesoru zpracovávat přerušení
- opakování přístupu do paměti
- jednotka řízení paměti musí být schopna zajistit ochranu paměti
- při pokusu o práci s neexistující pamětí se vyvolá přerušení,
jednotka řízení paměti neexistující paměť doplní, zopakuje se
přístup do paměti
Virtuální paměť – zjednodušený princip
Logická stránka 0
Fyzická stránka 0
Logická stránka 1
Fyzická stránka 1
Logická stránka 2
Fyzická stránka 2
?
Logická stránka 3
Fyzická stránka 3
Logická stránka 4
Fyzická stránka 4
Logická stránka 5
Fyzická stránka 5
Logická stránka 6
- logická adresa, účastní se
překladu, leží v adresovém
prostoru
- fyzická adresa, leží v OP, platná
po překladu adres
- logické stránky reprezentují
adresový prostor
- fyzické stránky reprezentují OP
- odkládací prostor na disku
- pokud není k dispozici žádná
volná fyzická stránka, vezme se
obsah některé z alokovaných a
uloží se na disk, uvolněná fyzická
stránka se spojí s logickou
stránkou
- při požadavku čtení z odložené
stránky se vyvolá přerušení výpadek stránky a postupuje se
stejně, jako při požadavku na
volnou fyzickou stránku
Srovnání stránkování a segmentace (při virtualizaci)
FAP je dělen na elementy (chunks) pevné délky - rámce
FAP není rozdělen
Program (LAP) je kompilátorem (MMU) dělen na stránky
Segmenty LAP určuje programátor
Interní fragmentace uvnitř rámce
Žádná interní fragmentace
Žádná externí fragmentace
Externí fragmentace
OS udržuje tabulku stránek pro každý proces s určením, které
rámce s nimi souvisí
OS musí udržovat tabulku segmentů pro každý proces. Určuje
zaváděcí adresu a délku každého segmentu
OS udržuje seznam volných rámců
Operační systém udržuje seznam volných děr
Procesor používá číslo stránky a offset k výpočtu fyzické adresy
Procesor používá číslo segmentu a offset k výpočtu fyzické
adresy
Všechny stránky procesu nemusí být při běhu procesu ve FAP,
zavádění stránek probíhá podle potřeby
Všechny segmenty se zavádí do FAP podle potřeby
Zavedení stránky do FAP může způsobit požadavek zápisu
některé stránky na disk
Zavedení segmentu do FAP může způsobit výpis některého
segmentu na disk
Lokalita
- odkazy na instrukce programu a na data
mají tendenci tvořit shluky
- časová lokalita
- prostorová lokalita
- provádění programu je s výjimkou skoků
a volání podprogramů sekvenční
- programy mají tendenci zůstávat po
jistou dobu v rámci několika procedur
- často zpracovávanou datovou strukturou
bývá pole
- lze dělat odhady o průběhu programu a
potřeby dat v nejbližší budoucnosti