Ú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 Ver100 20101
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 Operační paměť 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) Mocnina dvou Kibibyte KiB 1 024 2 10 Mebibyte MiB 1 048 576 2 20 Gibibyte GiB 1 073 741 824 2 30 Tebibyte TiB 1 099 511 627 776 2 40 Pebibyte PiB 1 125 899 906 842 624 2 50 Exbibyte EiB 1 152 921 504 606 846 976 2 60 Zebibyte ZiB 1 180 591 620 717 411 303 424 2 70 Yobibyte YiB 1 208 925 819 614 629 174 706 176 2 80 Y38ÚOS Úvod do operačních systémů 07 - Správa paměti 4
Měříme množství informace Jednotka Značka B kb KiB MB MiB GB GiB TB TiB 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 1 000 000 976 562,5 1 000 953,7 1 ~0,9313 10 Gibibyte GiB ~1,074 10 9 ~1 073 742 1 048 576 ~1073,7 1024 1,074 1 Terabyte TB 10 12 ~0,9766 10 9 ~0,9766 10 9 1 000 000 ~953 674,3 1 000 931,3 1 ~0,9095 Tebibyte TiB ~1,1 10 12 ~1,074 10 9 ~1,074 10 9 ~1 099 512 1 048 576 ~1099,5 1024 ~1,1 1 Y38ÚOS Úvod do operačních systémů 07 - Správa paměti 5
Fyzická paměť bez abstrakce Uživatelský program 0xFF 0xFF 0xFFFF Operační systém v paměti ROM Uživatelský program Uživatelský program Systémové proměnné Video Operační systém v paměti RAM Operační systém v paměti ROM 0 0 0 Y38ÚOS Úvod do operačních systémů 07 - Správa paměti 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 PSW (Program Status Word) - klíč k paměti Problém s umístěním počátku kódu na různých adresách 0 32764 : CMP 16412 16408 16404 16400 16396 16392 16388 JMP 28 16384 0 16380 0 16380 0 16380 : : : ADD 28 CMP 28 ADD 28 MOV 24 24 MOV 24 20 20 20 16 16 16 12 12 12 8 8 8 4 4 4 JMP 24 0 JMP 28 0 JMP 24 0 Y38ÚOS Úvod do operačních systémů 07 - Správa paměti 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) 0 32764 : CMP 16412 16408 16404 16400 16396 16392 16388 Báze 16384 JMP 28 16384 0 16380 : ADD 28 MOV 24 20 16 12 8 4 JMP 24 0 Y38ÚOS Úvod do operačních systémů 07 - Správa paměti 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 Present / absent bit výpadek stránky (page fault) Virtuální paměť Stránka Fyzická paměť Rámec 60 K 64 K X 56 K 60 K X 52 K 56 K X 48 K 52 K X 44 K 48 K 7 40 K 44 K X 36 K 40 K 5 32 K 36 K X 28 K 32 K X 28 K 32 K 24 K 28 K X 24 K 28 K 20 K 24 K 3 20 K 24 K 16 K 20 K 4 16 K 20 K 12 K 16 K 0 12 K 16 K 8 K 12 K 6 8 K 12 K 4 K 8K 1 4 K 8K 0 K 4 K 2 0 K 4 K Y38ÚOS Úvod do operačních systémů 07 - Správa paměti 9
Abstrakce: Virtuální paměť - tabulky stránek výstup: adresa fyzické paměti tabulka stránek index do tabulky 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 15 000 0 14 000 0 13 000 0 12 000 0 11 111 1 10 000 0 9 101 1 8 000 0 7 000 0 6 000 0 5 011 1 4 100 1 3 000 0 2 110 1 1 001 1 0 010 1 110 offset Caching disabled Referenced Modified příznak přítomnosti stránky ve fyzické paměti Protection Present/absent Page frame number 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 Rámec 1 239 1 RW 35 1 25 0 R X 46 1 45 0 RW 52 1 78 1 RW 13 1 365 1 R X 25 1 485 0 R 58 1 96 1 RW 12 1 888 0 RW 2 Y38ÚOS Úvod do operačních systémů 07 - Správa paměti 11
Abstrakce: Virtuální paměť - tabulky stránek pro velké paměti víceúrovňové tabulky invertované tabulky Tabulky druhé úrovně 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
Čistá segmentace Segmentace se stránkováním Abstrakce - Segmentace Y38ÚOS Úvod do operačních systémů 07 - Správa paměti 17