Pi Principy i počítačů čů PAMĚŤOVÝ SUBSYSTÉM z pohledu OS
Správa paměti OS je správcem prostředků, tedy i paměti přidělování procesům zajištění ochrany systému i procesů zajištění požadavků aniž by došlo k zablokování
Hierarchie pamětí mikropočítače registry procesor vn nitřní vyrovnávací L1 L2 h paměť hlavní paměť L1,L2 cache RAM vnější odkládací (sekundární) paměť archivní paměť pevný ýdisk CD, DVD, pásek
PŘIDĚLOVÁNÍ PAMĚTI (spojité - nespojité) Přidělování v jednouživatelských OS:
Přidělování v prostředí více procesů Problém relokace a ochrany Základní metodiky rozdělení paměti pevné oddíly paměť rozdělena na oddíly specifické velikosti, procesy ve frontách podle požadované velikosti volné oddíly procesy dostávají paměť podle potřeby
Relokace Při psaní programu nejsou známy absolutní adresy, přiřazují se později : Připřekladu je-li známo absolutní umístění Při zavádění OS rozhodne o umístění kód se generuje s relokacemi + relativním adresováním Za běhu proces se může za běhu stěhovat
Řízení paměti Bitová mapa Bloky stejné délky, paragrafy Spojový seznam Bloky různých délek Je třeba řešit: který blok spojování volných bloků
Strategie přidělování First Fit Next Fit Best Fit Worst Fit 6 5 3 10 20 4
Virtuální paměť Oddělení adresového prostoru procesu od adresového prostoru fyzické paměti Transparentní (z hlediska procesu) převod mezi adresami
Virtuální paměť Ochrana Cena Snížení nebezpečí uváznutí Snížená fragmentace Pohodlí flat address space stejný svět rozšíření / zmenšení prostoru
Virtuální paměť Klíč převod virtuálních adres na fyzické (parciální zobrazení) 2 základní metody: stránkování segmentace
Stránkování fyzická paměť správce představa ř procesu rámec 0 stránka tá 0 rámec 1...... rámec N-1 stránka i... stránka M-1
Stránkování Virtuální adresový prostor rozdělen na bloky stejné velikosti stránky (pages) Fyzický adresový prostor rozdělen na bloky stejné velikosti jako stránky rámce (frames)
Pohled uživatele vs realita Pohled uživatele: spojitý adresový prostor Skutečnost: stránky rozházeny po hlavní i sekundární paměti, některé chybějí zcela stránkování je neviditelné pro proces/uživatele!
Adresa ve virtuálním prostoru vyjádřena jako dvojice [p,d] Mechanismus stránkování převede číslo stránky p na odpovídající íčíslo rámce p (lze-li to) mapování. Adresa ve fyzickém prostoru je pak vyjádřena dvojicí [p,d] Neexistuje-li mapování, dojde k výpadku stránky (page fault)
Překlad adres Překlad zajišťuje hardware (procesor/mmu) Mapování definuje operační systém Stránkovací tabulky Struktury potřebné k zajištění mapování adresa rámce pro danou stránku příznaky (platnost, přístup, )
Překlad adresy u stránkování page number page offset virtuální adresa (lineární ) stránkovací tabulka fyzická adresa příznaky rámec
Problémy stránkování interní fragmentace velikost stránkovacích tabulek 32b adresy 4GB, stránky 4kB stránkovací tabulka má 1M položek rychlost přístupu do stránkovacích tabulek instrukce s paměťovými operandy...
Výběr velikosti stránky Malé stránky malá lokalita referencí (typ. < 256) + menší fragmentace - velké stránkovací tabulky Vlké Velké stránky ák + malé stránkovací tabulky + lépe vyhovuje I/O - vetší fragmentace
Reálný příklad (4MB stránky)
Úpravy Víceúrovňové stránkování řeší problém velikosti tabulek TLB / Asociativní paměť řeší problém rychlosti přístupu Nulaúrovňové stránkování nejsou stránkovací tabulky, pouze asociativní paměť Inverzní stránkovací tabulky organizace nad rámci, nikoli stránkami
Reálný příklad (4kB stránky) - víceúrovňové stránkování
TLB lokalita chování programů asociativní paměť Platné Stránka Dirty Ochrana Rámec 1 125 1 RW 654 1 44 0 RW 132 1 485 1 RW 12 0 1 55 0 R X 142 1 111 0 R X 54 1 108 1 RW 54 1 88 0 R X 543
Inverzní stránkovací tabulky FAP menší než VAP 64-bitové CPU IA-64 VA p d f d FA hash fn hash table p f
Záznam stránkovací tabulky
Výpadek stránky Chybí převod VA FA, tedy nelze přistoupit k datům, tedy nelze vykonat instrukci výjimka: uložit kontext (stav CPU) zjistit VA zkontrolovat platnost adresy a oprávnění přístupu nalézt rámec pro mapování zrušit aktuální mapování rámce (a příp. uložit!) načíst stránku do rámce zavést mapování obnovit kontext
Algoritmy výměny stránek Replacement policy Optimální stránka Random Working set FIFO First in, first out LRU Least Recently Used NRU Not Recently Used NFU Not Frequently Used CLOCK Hodinový algoritmus
Optimální stránka Vybrána bude stránka, na kterou přistoupíme za nejdelší dobu nelze obecně implementovat Random Stránka bude vybrána zcela náhodně
Working Set Model Proces může být v RAM tehdy a jen tehdy, pokud všechny jím používané stránky mohou být v RAM ( all or nothing ) používané znamená přístup v rozsahu okna přístupů Stránkovací algoritmus vyhazuje jen stránky, které nejsou ve Working Set problém je jeho udržování
FIFO klasická fronta: nahrazení stránky, která byla v paměti nejdéle odstraňuje i často používané stránky zajímavost: Beladyova anomálie : zvýšení počtu rámců můževéstikezvýšení počtu výpadků
Beladyova anomálie
FIFO s druhou šancí úprava FIFO zavedením druhé šance pokud A=1, zařadím na konec fronty nevykazuje anomálii
NRU Not Recently Used Příznaky Accessed, Dirty (nastavuje HW, nuluje OS) Algoritmus: periodické nulování A při výpadku volím náhodně ze tříd v pořadí A-D: 0-0, 0-1, 1-0, 1-1 (tj. z nejnižší neprázdné třídy)
LRU Least Recently Used dlouho nepoužívané stránky asi nebudu potřebovat, naopak nedávno používané asi ano seznam, který je při každém přístupu upravován HW realizace: 64b čítač, který CPU při přístupu uloží do PTE, vybírá se nejnižší matice n n, při přístupu do rámce k nastavíme k-tý řádek na 1 a k-tý ýsloupec na 0 vybírá se řádek s nejméně jedničkami
NFU Not Frequently Used SW řešení LRU Čítač u stránek: periodicky přičítáme A vybíráme stránku s nejnižší hodnotou čítače Problém nezapomíná a znevýhodňuje mladé Úprava stárnutí (aging): posunu doprava, přičtu doleva
CLOCK Hodinový algoritmus Second chance Stránky jsou zařazeny v kruhovém seznamu Nastavování A Při výpadku: Je-li A=0, vyměním, je-li A=1, nastavím A=0 a posunu se
Mapovací strategie Lokální každý proces má svou množinu rámců, ve které provádí mapování (viz Working set) Globální všechny procesy sdílí všechny rámce
Implementační problémy znovuspuštění vs. dopracování instrukce sdílení stránek odstranění položky v TLB přizměně mapování
Segmentace fyzická paměť správce představa ř procesu segment M segment i segment 0 segment i... segment 0 segment M-1
Segmentace Segment nezávislý adresový prostor 0..limit Organizace podle potřeb a struktury programu kód, data, zásobníky, Segmenty různé a měnitelné velikosti Umístění segmentu v paměti je pro proces neviditelné (jako u stránkování) Výpadky segmentů obdobně jako u stránkování
Překlad adresy u segmentace segment number segment offset virtuální adresa (logická) tabulka segmentů + příznaky adr. začátku segmentu fyzická adresa (lineární )
Problémy segmentace Při výpadku je nutné vyměnit celý segment a segment může být velký Segment nemůže být větší než FAP Dynamická alokace externí fragmentace checkerboarding ale lze je sesypat
příklad kombinace segmentace a stránkování Jednotka řízení paměti (MMU - memory management unit) 46 Segmentace 32 Logická adresa (Logical address) Lineární adresa (Linear address) Stránkování 32 (32-36) Fyzická adresa (Physical address)
Možný překlad adresy virtuální adresa segment number page number page offset tabulka segmentů stránkovací tabulka(y) + fyzická adresa
Možný překlad adresy virtuální adresa segment number page number page offset tabulka segmentů stránkovací tabulka(y) + fyzická adresa
Segmented paging Rozdělení (segmenting) stránkovací tabulky + sdílení kódu + zmenšení nároků na stránkovací tabulku - větší komplexita, overhead - stránkovací tabulky stále musí být spojité - každý ýpřístup p do paměti znamená 2 vyhledání
Srovnání Segmentace programátor musí vědět externí fragmentace separátní ochrana sdílený kód, separátní kompilace Stránkování programátor nemusí vědět interní fragmentace