Principy operačních systémů
Lekce 2: Správa paměti
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
Přidělování jedné souvislé oblasti paměti
OS bez multitaskingu např. CP/M
Lekce 2: Správa paměti
7
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
Segmentace
Lekce 2: Správa paměti
17
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
Stránkování
Lekce 2: Správa paměti
20
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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
Principy operačních systémů – Ing. Nulíček Vladimír
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