Principy operačních systémů Lekce 2: Správa paměti
Funkce správce paměti Správce (operační) paměti je součástí kernelu. Jeho implementace může být různá, ale základní funkce jsou obdobné ve všech OS: Udržovat informace o paměti (volná paměť, přidělená procesu atd.) Přidělovat paměť procesům na jejich žádost Zařazovat uvolněnou paměť procesy k volné paměti Uvolňovat paměť např. při násilném ukončení procesu Zajišťovat ochranu paměti (většinou zajišťována hardwarově) Lekce 2: Správa paměti 2
Operační paměť Umístěna na základní desce Některé rozšiřující části mohou být i jinde (např. videopaměť na grafické kartě) Lekce 2: Správa paměti 3
Adresování paměti Adresa místa v paměti Absolutní udává pozici paměti vzhledem k počátku Relativní (offset) vztahuje se nikoli k počátku, ale k určité absolutní adrese, např. k počátku určitého paměťového bloku Lekce 2: Správa paměti 4
Adresový prostor Fyzický adresový prostor (FAP) = adresový prostor, který je fyzicky k dispozici ve výpočetním systému Logický adresový prostor (LAP) = adresový prostor, který mají k dispozici procesy LAP <= FAP reálné přidělování paměti LAP > FAP virtuální přidělování paměti Při virtuálním přidělování paměti je operační paměť nastavována prostorem na vnějším paměťovém médiu (obvykle HDD) Lekce 2: Správa paměti 5
Reálné metody přidělování paměti Přidělení jedné souvislé oblasti Přidělení bloků pevné velikosti Přidělení bloků proměnné velikosti Segmentace Stránkování Lekce 2: Správa paměti 6
Přidělování jedné souvislé oblasti paměti OS bez multitaskingu např. CP/M Lekce 2: Správa paměti 7
Přidělování jedné souvislé oblasti paměti Výhody: Jednoduchá správa Nízké nároky na technické vybavení Nevýhody: Nelze mít spuštěno několik procesů současně Velká část paměti může zůstávat nevyužitá Pro postupné spuštění několika procesů se používá tzv. swapování, tj. uložení celého adresního prostoru od mezního registru na pevný disk následně běh jiného procesu a po jeho ukončení je paměť obnovena do stavu před zálohováním Lze využít princip zásobníku (FIFO), pokud se postupně spouští více než dva procesy. Lekce 2: Správa paměti 8
Přidělování bloků pevné velikosti Bloky mohou být stejně velké nebo mohou mít různou velikost Tento typ přidělování paměti se nyní již nepoužívá, dříve např. OS MFT (Multitasking with Fixed Number of Tasks) Jeden proces může mít přiděleno i několik bloků Lekce 2: Správa paměti 9
Přidělování bloků pevné velikosti Nelze předem stanovit, kde (na jaké adrese) bude program uložen - program musí být relokabilní. použití relokační tabulky použití bázování a relativních skoků Relokační tabulka: Počet bloků paměti je konstantní Každý blok má jeden řádek v tabulce Každý řádek tabulky obsahuje počáteční adresu bloku, délku bloku a vlastníka (proces) resp. informaci, že jde o volný blok Bázování a relativní skoky: určitý registr se naplní skutečnou adresou např. začátku programu a pro odkazy na proměnné se používá místo pevné adresy hodnota bázového registru + posunutí (offset). Lekce 2: Správa paměti 10
Ochrana paměti Metoda mezních registrů Užití dvou mezních registrů (nastavuje OS), které uvádějí nejnižší a nejvyšší dostupnou adresu. V limitním registru procesoru je uložena hodnota aktuálního paměťového regionu. Hodnota lokální adresy se porovnává s hodnotou limitního registru. Pokud je tato hodnota větší, následuje vyvolání výjimky proces se pokouší zapsat mimo region. Mechanismus zámků a klíčů Rozdělení paměti na stránky o pevné velikosti. Každé je přidělen zámek (celé číslo). Ve speciálním registru procesoru je klíč. Ty stránky, které mají stejnou hodnotu zámku jako je hodnota klíče, může proces používat. Lekce 2: Správa paměti 11
Přidělování bloků pevné velikosti Výhody: Jednoduchost správy Možnost implementace multitaskingu Nevýhody Nelze spustit některé procesy, pokud požadují více paměti než je délka největšího volného bloku Velká pravděpodobnost fragmentace Lekce 2: Správa paměti 12
Dynamické přidělování bloků Velikost jednotlivých bloků se určuje až podle žádostí jednotlivých procesů o paměť Správce přidělí určitý volný blok odpovídající požadavkům procesu podle zvolené strategie: First fit (první vyhovující blok) Last fit (poslední vyhovující blok) Worst fit (největší volný blok) Best fit (nejmenší volný blok) Po ukončení procesu se vrátí přidělená paměť a může být následně přidělena jinému procesu Lekce 2: Správa paměti 13
Dynamické přidělování bloků Počet a délka bloků se mění během práce systému, není tedy vhodná evidence bloků v tabulce. Řešení: vytvoření hlaviček obsahuje informaci o vlastníkovi a ukazatel na začátek následujícího bloku Bloky se hledají odspodu podle hlaviček (postupně pomocí ukazatelů) Uvolnění se děje změnou informace o vlastníkovi v hlavičce bloku. Je nutno řešit fragmentaci, tj. spojování volných bloků Lekce 2: Správa paměti 14
Dynamické přidělování bloků Výhody: Dtto jako u předchozí metody, ale složitější správa paměti a pomalejší vyhledávání konkrétního paměťového bloku Částečně odstraňuje nevýhody předchozí metody Nevýhody: Počet procesů, které lze spustit, je limitovaná požadavky již spuštěných procesů Určitá pravděpodobnost fragmentace Při fragmentaci paměti je maximální velikost požadavku na paměť limitovaná velikostí největšího volného bloku. Lekce 2: Správa paměti 15
Segmentace Každý proces má přiděleno několik nezávislých segmentů, například: Kód procesu (pevná délka, pevný obsah) Globální konstanty (pevná délka, pevný obsah) Globální proměnné (pevná délka, proměnný obsah) Zásobník (proměnná délka i obsah) Lekce 2: Správa paměti 16
Segmentace Lekce 2: Správa paměti 17
Segmentace Používají se relativní adresy Adresy segmentů jsou uloženy v segmentových registrech Adresa objektu z hlediska procesu = adresa segmentu + offset Výhody: Velikost segmentů může být různá podle potřeby procesu Segmenty je možno prodlužovat a přesouvat Některé segmenty je možné sdílet Nevýhody: Nutnost HW podpory (segmentové registry) Komplikovanější ochrana paměti Paměť, kterou lze přidělit procesu, je omezena velikostí největšího souvislého bloku volné paměti Určitá pravděpodobnost segmentace (lze řešit přesouváním segmentů) Lekce 2: Správa paměti 18
Stránkování Rozlišuje se fyzická adresa objektu v paměti (absolutní adresa objektu) a logická adresa objektu (s tou pracují procesy) Paměťový prostor procesu je rozdělen na stejně dlouhé úseky stránky (např. 4096 B), procesu je přiděleno tolik úseků, kolik potřebuje Procesu se prostor jeví jako spojitý, je logicky spojitý, logické adresy jsou z intervalu <0,počet stránek x velikost stránky> Fyzicky jsou stránky na různých místech paměti, fyzicky je adresový prostor procesu nespojitý Evidence stránek v jednoduché tabulce (vlastník stránky nebo informace o tom, že je stránka volná) U každého procesu je evidován seznam přidělených stránek Lekce 2: Správa paměti 19
Stránkování Lekce 2: Správa paměti 20
Stránkování Velikost prostoru = počet stránek procesu x velikost stránky Logická adresa = <0, velikost prostoru-1> Index stránky procesu = Logická adresa DIV Velikost stránky Offset = Logická adresa MOD Velikost stránky Fyzická adresa = Mapuj stránku (Index stránky) x Velikost stránky + Offset Lekce 2: Správa paměti 21
Stránkování Výhody: Proces může dostat kolik stránek, kolik potřebuje (pokud jsou volné), stránky na sebe nemusí navazovat Nejsou problémy s fragmentací Nevýhody: Fragmentace uvnitř stránek (proces nemusí potřebovat celou poslední stránku) Omezení daná velikostí fyzického adresového prostoru Metoda stránkování po rozšíření na virtuální paměť a ve spojení se segmentací se běžně používá v současných OS. Lekce 2: Správa paměti 22
Fragmentace paměti Fragmentace paměti = volné části paměti netvoří souvislý blok Při popsaných metodách přidělování paměti jednotlivým procesům dochází k větší či menší míře fragmentace Možnosti snížení míry fragmentace: Vhodnou metodou výběru bloku paměti Setřásání paměti Lekce 2: Správa paměti 23
Alokační strategie Metody výběru vhodného bloku paměti: Metoda First Fit správce paměti prochází bloky od začátku uživatelské oblasti a přidělí paměť z prvního vhodného bloku (dostatečně velkého). Tato metoda je nejrychlejší, ale není nejlepší z hlediska fragmentace. Metoda Best Fit správce paměti projde všechny bloky a hledá takový, který je nejvhodnější (stačí co se týče požadované velikosti a nejméně ji přesahuje) optimální metoda z hlediska fragmentace, ale nejpomalejší Metoda Last Fit jako First Fit ale z druhé strany, nejprve se obsazují nejvyšší adresy směrem k nejnižším použití u pamětí typu zásobník. Tyto metody řeší fragmentaci pouze částečně (zmenšují ji, ale vždy nějaká zůstává). Výhoda = adresový prostor procesu se během jeho běhu nemění (na rozdíl od následující metody). Lekce 2: Správa paměti 24
Setřásání paměti Přesouvání bloků paměti, které jsou neobsazené tak, aby se propojilo více volných bloků do jednoho většího souvislého bloku. Tzn. obsazené bloky je nutno setřást směrem k nižším adresám. Je nutno vyřešit dva problémy: Samotné přesouvání je časově náročné Adresový prostor procesu, kterému je paměť přesouvána, se mění tj. nemůže používat absolutní adresy Řešení časové náročnosti: Bloky se přesouvají jen tehdy, kdy o paměť bude žádat proces s nároky vyššími než je délka největšího volného paměťového bloku (a přesouvá se jen tak dlouho, než se dostatečně velký blok nevytvoří) Využití HW možností speciální mikroprocesor blitter (Block Image Transfer) Lekce 2: Správa paměti 25
Setřásání paměti Možnosti řešení problému změny adresového prostoru procesu při přesouvání paměti: Stanovení pravidel adresování na nižší úrovni Např. používání relativních adres a bázování k určitému registru, kde je uložena adresa momentálního začátku adresového prostoru procesu Výhoda: jednoduchá správa paměti a malá časová náročnosti Nevýhoda: HW závislost a nutnost použití pouze relativních adres Stanovení pravidel adresování na vyšší úrovni Např. použití mechanismu zamykání bloku paměti po dobu jejího používání Výhoda: jednoduchá správa paměti Nevýhoda: nutnost spolupráce programátorů aplikací Před každým přesouváním správce paměti informuje každý proces, který je přesouván, o nové adrese začátku bloku Proces si přepočítá všechny své absolutní adresy Zpráva o přesouvání musí mít nejvyšší prioritu Vysoké nároky na systém i procesy, používá se jen pro procesy, které musí pracovat s absolutními adresami (např. ovladače I/O zařízení, antivirové programy apod.) Lekce 2: Správa paměti 26
Metody setřásání paměti Kooperativní setřásání Používá se druhá z výše zmíněných metod Procesy na přesunech spolupracují (kooperují) s OS Používalo se např. v počítačích MacIntosh Transparentní setřásání Kombinace první a třetí metody Procesy na přesunech nespolupracují Např. OS Epoc Lekce 2: Správa paměti 27