ÚVOD DO OPERAČNÍCH SYSTÉMŮ
Správa paměti Přímý přístup k fyzické paměti, abstrakce: adresový prostor, virtualizace, segmentace
České vysoké učení technické Fakulta elektrotechnická Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
Ver.1.00
20101
Operační paměť Ideální operační paměť: nekonečně velká, nekonečně rychlá, udržující data i bez napájení, nejlépe zadarmo . Cena sice klesá, ale nároky dnešních programů na paměť rostou. Důležitý prostředek, s nímž se musí šetrně nakládat. Hierarchie pamětí Správce paměti
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
2
Druhy pamětí RAM – Random Access Memory SIMM – Single Inline Memory Module DIMM – Dual Inline Memory Module DRAM – Dynamic RAM SDRAM – Synchronous DRAM DDR – Double Data Rate SRAM – Static RAM ROM – Read Only Memory PROM – Programmable ROM EPROM – Erasable Programmable ROM CMOS – Complementary / Metal-Oxide Semiconductor (Configuration Memory Operating System) FLASH FIFO – First In First Out LIFO – Last In First Out Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
3
Měříme množství informace bit byte word
Jednotka
Značka
Velikost v B (byte)
Kibibyte
KiB
1 024
210
Mebibyte
MiB
1 048 576
220
Gibibyte
GiB
1 073 741 824
230
Tebibyte
TiB
1 099 511 627 776
240
Pebibyte
PiB
1 125 899 906 842 624
250
Exbibyte
EiB
1 152 921 504 606 846 976
260
Zebibyte
ZiB
1 180 591 620 717 411 303 424
270
Yobibyte
YiB
1 208 925 819 614 629 174 706 176
280
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
Mocnina dvou
4
Měříme množství informace Jednotka
Značka
B
kB
KiB
MB
MiB
GB
GiB
Kilobyte
kB
1 000
1
~0,9766
Kibibyte
KiB
1 024
1,024
1
Megabyte
MB
1 000 000
1000
~976,6
1
~0,9537
Mebibyte
MiB
1 048 576
~1048,6
1024
1,049
1
Gigabyte
GB
9 10
1 000 000
976 562,5
1 000
Gibibyte
GiB
~1,074·109
~1 073 742
1 048 576
Terabyte
TB
1012
~0,9766·109
Tebibyte
TiB
~1,1·1012
~1,074·109
953,7
1
~0,9313
~1073,7
1024
1,074
1
~0,9766·109
1 000 000
~953 674,3
1 000
~1,074·109
~1 099 512
1 048 576
~1099,5
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
TB
TiB
931,3
1
~0,9095
1024
~1,1
1
5
Fyzická paměť bez abstrakce
0xFF...
Operační systém v paměti ROM
0xFF...
0xFFFF Uživatelský program
Uživatelský program Systémové proměnné
Uživatelský program
Video
Operační systém v paměti RAM
Operační systém v paměti ROM
0
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
0
0
6
Běh více programů bez abstrakce fyzické paměti Přidělení celé paměti programu - data ostatních programů uložena na disk. Přesun mezi operační pamětí a diskem je pomalý. => Snaha mít více programů v paměti. Nebezpečí přepsání paměti jiného programu (třeba i OS). Rozdělení paměti na bloky. 0 32764 : PSW (Program Status Word) - klíč k paměti. CMP 16412 16408 Problém s umístěním počátku kódu na různých adresách.
0 : ADD MOV
JMP 24
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
16380 28 24 20 16 12 8 4 0
0 : CMP
JMP 28
16380 28 24 20 16 12 8 4 0
JMP 28 0 : ADD MOV
JMP 24
16404 16400 16396 16392 16388 16384 16380 28 24 20 16 12 8 4 0
7
Abstrakce: Adresový (adresní) prostor (address space) Každý proces má svůj adresový prostor. Bázový registr a mezní registr (base and limit registers). Dynamická relokace. Odkládání (procesy potřebují více paměti než je fyzicky k dispozici). Správa volné paměti. (Bitmapa, spojový seznam) Které volné místo vybrat? (first fit, next fit, best fit, worst fit, quick fit)
Báze
16384
0 : CMP
JMP 28 0 : ADD MOV
JMP 24
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
32764 16412 16408 16404 16400 16396 16392 16388 16384 16380 28 24 20 16 12 8 4 0
8
Abstrakce: Virtuální paměť Řešení problému rozsáhlých programů. Rozdělení na více částí (overlays) - obtížné programování. Virtuální pamět. Každý program má svoji a její velikost přímo nesouvisí s dostupnou fyzickou pamětí. MMU - Memory Management Unit. stránky a stránkové rámy. Virtuální Fyzická paměť paměť Present / absent bit. Stránka Rámec výpadek stránky (page fault). 60 K – 64 K X 56 K – 60 K 52 K – 56 K 48 K – 52 K 44 K – 48 K 40 K – 44 K 36 K – 40 K 32 K – 36 K 28 K – 32 K 24 K – 28 K 20 K – 24 K 16 K – 20 K 12 K – 16 K 8 K – 12 K 4 K – 8K 0K–4K
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
X X X 7 X 5 X X X 3 4 0 6 1 2
28 K – 32 K 24 K – 28 K 20 K – 24 K 16 K – 20 K 12 K – 16 K 8 K – 12 K 4 K – 8K 0K–4K
9
Abstrakce: Virtuální paměť - tabulky stránek
tabulka stránek
index do tabulky
Present/absent
Protection
0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 1
Modified
000 000 000 000 111 000 101 000 000 000 011 100 000 110 001 010
Referenced
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Caching disabled
1 1 0 0 0 0 0 0 0 0 0 0 1 0 0
Page frame number
výstup: adresa fyzické paměti
offset
příznak přítomnosti stránky ve fyzické paměti 110
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0
vstup: adresa virtuální paměti Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
10
Abstrakce: Virtuální paměť - zrychlení stránkování - TLB Menší tabulka nedávno použitých stránek
Platná Virtuální stránka Modifikována Ochrana 1 239 1 RW 1 25 0 RX 1 45 0 RW 1 78 1 RW 1 365 1 RX 1 485 0 R 1 96 1 RW 1 888 0 RW
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
Rámec 35 46 52 13 25 58 12 2
11
Abstrakce: Virtuální paměť - tabulky stránek pro velké paměti Tabulky druhé úrovně
víceúrovňové tabulky invertované tabulky
. . .
Tabulka první úrovně
. . .
PT1 PT2
. . .
Offset
. . .
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
12
Abstrakce: Virtuální paměť - Jak vybrat nahrazovanou stránku optimální (optimal) :-( nedávno nepoužité stránky - NRU - Not Recently Used FIFO druhá šance (second chance) hodiny (clock) nejdéle nepoužitá stránka - LRU - Least Recently Used často nepoužívaná stránka - NFU - Not Frequently Used stárnutí (Aging) working set WS Clock (Working set clock)
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
13
Abstrakce: Virtuální paměť - Jak vybrat nahrazovanou stránku optimální (optimal) - nejde napsat, ale je dobrý pro testování NRU - hrubé přiblížení k LRU FIFO - může odložit na disk důležité stránky druhá šance (second chance) - vylepšení FIFO hodiny (clock) - realistický LRU - výborný, ale těžko implementovatelný NFU - hrubé přiblížení LRU stárnutí (Aging) - dobrá aproximace LRU working set - náročne na implementaci WS Clock (Working set clock) - dobrý a efektivní algoritmus
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
14
Abstrakce: Virtuální paměť - Poznámky ke stránkování paměti Lokální vs. globální alokace. Řízení zátěže. Velikost stránky. Oddělení instrukcí a dat. Sdílené stránky. Sdílené knihovny. Mapování souborů do paměti. Úklid. Interface?
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
15
Abstrakce: Virtuální paměť - Implementace stránkování paměti Práce OS. Obsluha výpadku stránky. Zálohování instrukce. Zamykání stránek v paměti (IO). Kam odkládat?
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
16
Abstrakce - Segmentace Čistá segmentace Segmentace se stránkováním
Y38ÚOS Úvod do operačních systémů 07 - Správa paměti
17