Operační systémy 2
Přednáška číslo 2 Přidělování paměti
Základní pojmy • Paměť = operační paměť – paměť, kterou přímo využívají procesory při zpracování instrukcí a dat ● Funkce modulu přidělování paměti: – – – – –
Sledování stavu každého místa op. paměti Určování strategie přidělování paměti Realizace přidělování paměti Realizace uvolňování paměti Realizace virtuální paměti
Techniky přidělování paměti 1.Přidělování jedné souvislé oblasti paměti 2.Přidělování paměti po sekcích 3.Dynamické přemísťování sekcí 4.Stránkování 5.Stránkování na žádost 6.Segmentace 7.Segmentace a stránkování na žádost
Přidělování jedné souvislé oblasti paměti ●
● ●
Nejsou nutné žádné zvláštní technické prostředky Není možné multiprogramování 3 části paměti – – –
OS úloha nevyužitá část
Přidělování jedné souvislé oblasti paměti ●
●
Technické vybavení – mezní registr OS (ochrana paměti) Výhody – –
●
jednoduchost možnost pracovat i s malou pamětí
Nevýhody – – –
není využita celá paměť je-li úloha čekající není využita paměť ani procesor úlohu nelze vykonat požaduje-li větší paměť než je k dispozici
Přidělování jedné souvislé oblasti paměti
Přidělování paměti po sekcích ●
●
Paměť se rozdělí na samostatné sekce, každá obsahuje paměťový prostor jedné úlohy Moduly – – – –
Sledování stavu každé sekce – používá se, nepoužíva se, rozsah Plánovač úloh – strategie přidělování Přidělení paměti Uvolnění paměti
Přidělování paměti po sekcích ● ●
●
Ochrana paměti – mezní registry Nevýhoda – časté změny stavových registrů, není únosné, aby OS kontroloval všechny registry při každém zápisu do paměti Metody – –
Statické přidělování – přidělí se vždy stejně velký blok Dynamické přidělování – dle potřeby
Přidělování paměti po sekcích ●
Výhody – – –
●
multiprogramování není nutné speciální technické řešení jednoduchá implementace
Nevýhody –
fragmentace paměti ● ●
Vnější Vnitřní
Přidělování paměti po sekcích
Volné (červené) prostory v jednotlivých úlohách – vnitřní fragmentace
Vnější fragmentace OS
OS
Úloha 1
Úloha 1
Úloha 2 Úloha 3
Úloha 4 Nelze umístit
Ukončení úlohy 2 Úloha 3
Dynamické přemísťování sekcí ●
●
●
Řeší problém vnější fragmentace. Periodické slučování volných oblastí do jedné. Může vzniknout problém v úloze pokud se přemístí v paměti za běhu – nutno modifikovat některé informace Technické vybavení – –
dodržování typů proměnných (kvůli přesunu) registry relokace
Dynamické přemísťování sekcí ●
Výhody – – –
●
eliminace fragmentace možnost více sekcí oproti předchozí metodě lepší využití paměti i procesoru
Nevýhody – – –
náročné technické vybavení snížení rychlosti limitováno rozsahem paměti
Dynamické přemísťování sekcí
Stránkování paměti ●
●
●
Adresový prostor každé úlohy se rozdělí na stejně velké sekce – stránky. Na stejně velké díly (bloky) se rozdělí operační paměť. Pak se mohou snadněji stránky přesouvat mezi bloky. Bloky se stránkami jedné úlohy na sebe nemusí navazovat Každá stránka má registr (tabulky stránek)
Stránkování paměti ● ● ●
Moc velké stránky – fragmentace Malé stránky – moc registrů (náročné) Funkce modulu – – – –
Sledování stavu – tabulka stránek pro každou úlohu Tabulka bloků – volný nebo užitý Plánovač úloh Přidělování a uvolňování bloků
Stránkování paměti
Stránkování paměti ●
Výhody – –
●
Odstranění fragmentace Větší počet úloh
Nevýhody – – – – –
Náročné řešení Snížení rychlosti Tabulky zabírají paměť a snižují rychlost Vnitřní fragmentace – i na malou úlohu velká stránka (stránky mají pevnou velikost) Omezeno fyzickým rozsahem paměti
Stránkování na žádost ●
●
●
●
Virtuální paměť – celá úloha se neumístí do operační paměti – součet všech adresových prostor může překročit kapacitu paměti V paměti pouze právě prováděná část úlohy Problém pokud se program odkazuje na právě nezavedenou část úlohy Je nutná strategie rozhodování co má být v paměti zavedeno
Stránkování na žádost ●
●
Tabulka stránek se rozšíří o stavový bit, určující zda je stránka zavedena Problém, není-li místo pro další stránku – musí se nějaká odstranit (do záložní paměti). Může se stát, že tato je vzápětí požadována
Stránkování na žádost ●
Funkce modulu –
– – –
Sledování stavu paměti – tabulky stránek (každá úloha), bloků (jedna v systému), tabulka souborů (pro každý adresový prostor úlohy) v záložní paměti Rozhodování o přidělení paměti Přidělování paměti Uvolňování paměti
Stránkování na žádost ●
Algoritmy výměny – –
●
FIFO (First In First Out) – první tam, první ven LRU (Least Recently Used) – nejdéle nepoužívaná
Použití u IBM/370
Stránkování na žádost ●
Výhody – – – –
●
Odstranění fragmentace Není omezení fyzickým rozsahem paměti Efektivní využití Multiprograming
Nevýhody – – –
Nákladnost Vnitřní fragmentace Nutnost ošetřit zahlcení systému
Segmentace paměti ●
●
●
Segment – logické seskupení informací (hlavní program, podprogram, data…) Každá úloha je tvořena několika segmenty Každý odkaz na paměť obsahuje: – –
segment – číslo segmentu offset – paměťové místo v segmentu
Segmentace paměti ●
●
●
Je nutné technickými prostředky systému přemapovat dvourozměrnou adresu (segment, offset) na jednorozměrnou Tabulka segmentů – počáteční adresa, rozsah Offset nesmí být větší než je velikost segmentu
Segmentace paměti ●
Výhody – –
●
● ●
snadné odhalení potencionálních chyb v programech – offset ukazuje mimo segment možnost sdílení kódu mezi úlohami (podprogramy –Sqrt)
Fragmentace – stejný problém jako u stránkování, rozdíl je v tom, že segmenty nemají stejnou délku Zhušťování Tento systém se v praxi nevyužívá
Segmentace se stránkováním ● ●
●
●
Kombinace obou předchozích technik Používá se např. u Motorol 68x00 a i386 Adresový prostor každého procesu je rozdělen na lokální část (pouze tento proces) a globální (sdílenou) část Dvě tabulky: – –
LDT (local description table) GDT (global description table)
Segmentace se stránkováním ●
●
●
●
Logická adresa je dvojice (selector, offset) Selector – číslo segmentu, zda je v LDT či GDT a informace na ochranu paměti Z těchto informací se vytvoří lineární adresa – pokud je mimo segment vznikne chyba (memory fault) Každý segment je stránkován – lineární adresa obsahuje číslo stránky a offset
Segmentace se stránkováním ●
●
U i386 je velikost stránky 4kB – velikost segmentu musí být násobkem Pro zvýšení rozsahu fyzické paměti je možné swapovat stránky na disk
Správa paměti v reálných operačních systémech
MS DOS ● ● ●
●
Segmentace paměti Není žádná ochrana paměti Kterýkoliv proces může zapisovat kam chce Jednoprogramový systém – tedy běží jen jeden program (+ rezidenty – např. antivir, ovladače znakové sady)
Windows ●
● ●
●
Virtuální metoda segmentace se stránkováním na žádost Každý proces má několik segmentů U Windows 3.X se používaly společné segmenty pro dynamicky linkované knihovny – procesy spolu takto mohly komunikovat Novější Windows už tyto praktiky běžně nepoužívají
Windows ●
●
●
●
●
Odkládací soubor se jmenuje pagefile.sys a je (obvykle) v kořenovém adresáři Ovládání – ovládací panely, karta Systém, záložka Upřesnit Též pravým tlačítkem myši na ikonu Tento počítač a zvolit Vlastnosti Možné tento soubor sdílet pokud používáme současně více Windows Možné zakázat používání odkládacího souboru jeho nastavením na velikost 0
Procesor x386 (a lepší) ●
●
●
mají zabudovánu základní ochranu paměti k paměti v režimu jádra mohou přistupovat pouze procesy běžící v režimu jádra Každá stránka má nastaven příznak jak k ní lze přistupovat –
čtení, zápis, spouštění kódu
UNIX (Linux) ●
●
●
V počátcích přidělování jedné souvislé oblasti – tehdejší hardware nic jiného neuměl Později virtuální paměť se segmentací – ale odkládal se paměťový prostor celého procesu Linux – stránkování na žádost
Linux ●
●
●
Odkládá se nejdéle nepoužívaná stránka Pokud je spuštěn jeden program vícekrát – může se sdílet část paměti s kódem Pokud je stránka v swapovacím prostoru a chceme jí pouze číst nenačítá se do paměti
Linux Obvykle se používá odkládací disk (swap) ● Formátování: mkswap /dev/hda3 ● Začátek používání: swapon /dev/hda3 ● Ukončení: swapoff /dev/hda3 ● Zápis v /etc/fstab: /dev/hda3 none swap sw 0 0 ● Lze též použít odkládací soubor ● Vytvoření dd if=/dev/zero of=/soubor bs=4G ● Pak se všude místo /dev/hda3 píše /soubor ●
Mac OS X ● ●
● ● ●
Stránkování na žádost Vytváří se soubory swapfile0, swapfile1, atd Po zaplnění jednoho se vytvoří další Jsou v adresáři /private/var/vm Převzato z OS NeXT
Konec
Děkuji za pozornost