Adresace paměti 11.přednáška
Adresace paměti základní pojmy Adresa fyzická - adresa, která je přenesena na adresní sběrnici a fyzicky adresuje hlavní paměť logická - adresa, kterou má k dispozici proces k adresaci přiděleného adresového prostoru efektivní - adresa, která vzniká modifikací operandu segmentovými registry Obvyklý postup překladu adres: operand efektivní logická fyzická vnitřní sběrnice procesoru adresní sys. sběrnice Buchtela@pef.czu.cz 2
Adresový prostor Lineární adresový prostor Tvoří jej souvislá (lineární) posloupnost efektivních adres Segmentový adresový prostor Tvoří jej posloupnost segmentů efektivních adres Každý segment tvoří lineární adresový prostor Segmenty jsou definovány zapsáním bázové (základní) adresy segmentu do segmentového registru Segmenty mohou mýt různou velikost a vzájemně se překrývat Buchtela@pef.czu.cz 3
Procesory bez dynamického překladu adres Efektivní adresa se ukládá přímo do adresového bufferu, odkud je pak přenesena na adresní sběrnici s dynamickým překladem adres Mezi vnitřní sběrnici procesoru a adresní sběrnici je vložena jednotka DAT (Dynamic Adress Translation), která překládá efektivní (logickou) adresu na fyzickou. Buchtela@pef.czu.cz 4
Adresace bez jednotky DAT Adresní registry (IND) Segmentové registry OZ operand + + efektivní adresa Adresový buffer fyzická adresa Přičtení obsahu adresních registrů k adrese v poli operandu modifikace operandu Přičtení obsahu segmentového registru k modifikované adrese operandu efektivní adresa Nemá-li procesor segmentové registry, uloží se modifikovaný operand přímo do adres. bufferu. Efektivní adresa se uloží do adresního bufferu fyzická adresa Buchtela@pef.czu.cz 5
Adresace s jednotkou DAT Na vstup jednotky DAT je přiváděna efektivní adresa Výstupem jednotky DAT je efektivní adresa přeložená na adresu fyzickou vnitřní sběrnice efektivní adresa Logický adresový prostor lineární segmentovaný DAT logický adresový prostor systémová (adresní) sběrnice fyzická adresa Buchtela@pef.czu.cz 6
Adresace s jednotkou DAT lineárn rní adresový prostor Logické adresy se každému procesu přidělují od pevně zvolené adresy p Všechny procesy mají stejný logický adresový prostor, jehož velikost je dána šířkou vnitřní sběrnice n Logické adresy procesů jsou z intervalu <p, p + 2 n > Obvykle u procesorů RISC Buchtela@pef.czu.cz 7
Adresace s jednotkou DAT lineárn rní adresový prostor OZ Operand Adresní registry + efektivní adresa = logická adresa DAT Pevná adresa + Převedení logické adresy na fyzickou adresu Adresový buffer fyzická adresa Buchtela@pef.czu.cz 8
Adresace s jednotkou DAT segmentový adresový prostor Adresový prostor je složený ze segmentů různé velikosti, které se mohou překrývat Segmenty jsou chráněny regulace přístupu procesů k segmentům Některé segmenty mohou procesy mezi sebou sdílet např. jádro operačního systému Jednotka DAT obsahuje tabulku deskriptorů segmentů V deskriptoru je zaznamenáno: velikost segmentu adresa jeho báze způsob ochrany Buchtela@pef.czu.cz 9
Adresace s jednotkou DAT segmentový adresový prostor tabulka deskriptorů INTEL 80386 Buchtela@pef.czu.cz 10
Strategie přidp idělování paměti Pokud je multitaskingový operační systém v činnosti, je rezidentní část jádra operačního systému umístěna obvykle na začátku hlavní paměti. Zbývající část hlavní paměti operační systém přiděluje zpracovávaným procesům. Jsou možné tyto způsoby jejího přidělování: přidělování statických souvislých úseků přidělování dynamických souvislých úseků přidělování virtuálního adresového prostoru Buchtela@pef.czu.cz 11
Přidělování statických souvislých úseků 0 128 kb 192 kb 256 kb 384 kb 512 kb Operač ní systém úsek 1 (64kB) úsek 2 (64 kb) úsek 3 (128kB) úsek 4 (128 kb) úsek 5 (256 kb) Paměť je po celou dobu běhu operačního systému rozdělena na souvislé úseky, jejichž umístění se nemění Proces se uloží do nejmenšího volného úseku, do kterého ho lze uložit 768 kb úsek 6 (256kB) Buchtela@pef.czu.cz 12
Přidělování dynamických souvislých úseků Operační systém vybere nejmenší souvislou volnou část paměti tak, aby do ní mohl umístit celý proces Proces 1 Proces 1 Proces 1 Proces 5 Proces 5 Proces 2 Proces 4 Proces 4 Proces 4 Proces 3 Proces 3 Proces 3 Proces 3 Proces 3 Proces 2 ukončen Proces 4 spuštěn Proces 1 ukončen a místo něj zaveden do paměti proces 5 Realokace Buchtela@pef.czu.cz 13
Přidělování souvislých úseků - výhoda Překlad mezi logickou a fyzickou je možné provést jednoduchou jednotkou DAT (i bez jednotky DAT) Překlad spočívá v přičtení počáteční adresy (báze) k logické adrese Hodnota báze je zapsána do bázového registru operačním systémem při spuštění procesu Buchtela@pef.czu.cz 14
Přidělování souvislých úseků - nevýhody Paměť obsahuje řadu malých, procesy neobsazených částí fragmentace paměti U přidělování dynamických úseků lze odstranit realokací obsazených úseků paměti spotřebovává procesorový čas Proces není chráněn před ostatními procesy Proces může přepsat oblast paměti vyhrazenou jinému procesu Ochrana procesu pomocí techniky klíč-zámek Buchtela@pef.czu.cz 15
Virtuáln lní paměť Je-li proces větší než fyzická paměť počítače, nelze jej přímo uložit a spustit Proces je nutno rozdělit na menší části (tzv. overlays) a postupně nahrávat do paměti a zpracovávat Je-li postupné umísťování do paměti prováděno automaticky, mapuje jednotka DAT logický adresový prostor procesu na fyzický tak, jak stanovuje operační systém Procesor může pracovat v celém svém logickém prostoru, jakoby se fyzická paměť rozšířila na velikost logické paměti virtuální paměť Buchtela@pef.czu.cz 16
Virtuáln lní paměť lineárn rní adresový prostor Stránkování paměti virtuální adresový prostor rozdělen na stránky (1-8kB) fyzický adresový prostor rozdělen na stejně velké úseky rámy nebo rámce (frames) Logická (virtuální) adresa rozdělena na číslo stránky posuv (offset) vyjadřuje umístění (lokální adresu) v rámci stránky Buchtela@pef.czu.cz 17
Virtuáln lní paměť lineárn rní adresový prostor Každý proces má svoji tabulku stránek Každý řádek tabulky stránek odpovídá jedné stránce, v řádce je uvedeno: číslo rámu, které OS stránce přidělil bit platnosti stránky P kód autorizace R (povolení číst) bit změny obsahu stránky Z W (povolení zapisovat) X (použít stránku pro řízení procesu) číslo bloku, ze kterého lze stránku získat (systém souborů, swappovací oblast) Buchtela@pef.czu.cz 18
Virtuáln lní paměť lineárn rní adresový prostor logická adresa číslo stránky posuv Registr tabulky stránek Tabulka stránek P RWX Z blok číslo rámu rám posuv fyzická adresa Buchtela@pef.czu.cz 19
Virtuáln lní paměť lineárn rní adresový prostor Operační systém procesu namapuje jen určitý počet stránek použije-li proces virtuální adresu mimo namapovaný prostor, dojde k výpadku stránky je generováno přerušení OS požadovanou stránku namapuje Operační systém často mapuje procesu stránky až, když dojde k výpadku stránky stránkování na žádost Nastane-li situace, kdy nejsou žádné volné rámy, OS musí některé stránky odmapovat různé strategie výběru stránek Buchtela@pef.czu.cz 20
Virtuáln lní paměť příklad Procesor pracuje s velikostí stránky 4kB (4096 B). Proces A má obsazenu tabulku stránek takto: stránka bit platnosti číslo rámu 0 1 2 1 2 0 40 1 3 Hlavní paměť 0 rám 0 4096 rám 1 8192 rám 2 12288 rám 3 Program, který řídí proces A má startovací adresu 100. Kde ve fyzické paměti je obsah této adresy umístěn? logická adresa: stránka (0. 4096) + posuv (100) fyzická adresa: rám (2) + posuv (100) 8192 + 100 = 8292 Buchtela@pef.czu.cz 21
Virtuáln lní paměť příklad Procesor pracuje s velikostí stránky 4kB (4096 B). Proces A má obsazenu tabulku stránek takto: stránka bit platnosti číslo rámu 0 1 2 1 2 0 40 1 3 Hlavní paměť 0 rám 0 4096 rám 1 8192 rám 2 12288 rám 3 Proces provede instrukci LDX R, 9000. Kterou adresu fyzické paměti procesor do registru načte? logická adresa: stránka (2. 4096) + posuv (808) fyzická adresa: rám (3) + posuv (808) 12288 + 808 = 13096 Buchtela@pef.czu.cz 22
Virtuáln lní paměť příklad Procesor pracuje s velikostí stránky 4kB (4096 B). Proces A má obsazenu tabulku stránek takto: stránka bit platnosti číslo rámu 0 1 2 1 2 0 40 1 3 Hlavní paměť 0 rám 0 4096 rám 1 8192 rám 2 12288 rám 3 Následně procesor začne provádět instrukci ADX R, 4098. Popište činnost procesoru a operačního systému při zpracování této instrukce. logická adresa: stránka (1. 4096) + posuv (2) fyzická adresa: bit platnosti = 0 výpadek stránky Buchtela@pef.czu.cz 23
Víceúrovňové stránkov nkování Předpokládejme, že logická adresa má 32 bitů a velikost stránky je 4kB (12 bitů). Tabulka stránek musí potom mít 1M (20 bitů) řádků. Každý řádek má několik bytů tabulka stránek by v paměti zabírala příliš místa Operační systém tabulku stránek také stránkuje udržuje její kopii na disku a do paměti uloží jen část Adresa stránky se rozdělí na adresu adresáře stránek vlastní adresu stránky Buchtela@pef.czu.cz 24
Víceúrovňové stránkov nkování Pokud rozdělíme 20 bitů adresy stránek z příkladu na adresu adresáře s 10 bity a adresu stránky také s 10 bity, potom obě tabulky budou mít jen 1024 řádků. Buchtela@pef.czu.cz 25
Invertovaná tabulka stránek Jiným řešením příliš velké tabulky stránek je použití tzv. invertované tabulky stránek Tabulka s přiřazením stránky a rámu je organizována podle čísel rámů (rámů je podstatně méně než stránek) OS hledá k číslu stránky číslo rámu a musí mít přímý přístup do tabulky podle čísla stránky realizováno pomocí hash tabulky Hash funkce je dána vztahem číslo stránky mod velikost základní části hash tabulky Více stránek může být mapováno do stejného místa hash tabulky rehashing Buchtela@pef.czu.cz 26
Invertovaná tabulka stránek logická adresa stránka posuv Hash tabulka Invertovaná tabulka stránek Rám 0 Rám 1 P RWX Z blok rám posuv Buchtela@pef.czu.cz 27
Virtuáln lní paměť segmentovaný adresový prostor Segmentovaný adresový prostor umožňuje: strukturovat program a data do oddělených segmentů s různými způsoby ochrany sdílení dat mezi procesy realizovat podprogramy uložením do segmentu, který je přístupný všem procesům nezávislý překlad (kompilaci) částí programu Buchtela@pef.czu.cz 28
Segmentovaný adresový prostor v UNIXu Některé implementace operačního systému UNIX (SYSTEM V) ukládají do různých segmentů program (text), data a zásobník (stack) Hlavní paměť Proces A Proces B STACK STACK DATA TEXT DATA TEXT Buchtela@pef.czu.cz 29
TLB cache Pro uchovávání právě načtené řádky tabulky stránek jsou procesory vybaveny rychlou vyrovnávací pamětí TLB cache (Translation Look aside Buffer) obvykle plně asociativní obsahuje řádově desítky řádků Příklad: Procesor má TLB cache s 32 řádky. Velikost stránky je 4kB. V jak velikém rozsahu adres může pracovat program, aniž by procesor musel při překladu adresy číst z hlavní paměti? (Samozřejmě s výjimkou počátečního naplnění TLB cache) TLB cache může obsahovat 32 stránek, každá o velikosti 4 kb rozsah adres = 32. 4 = 128 kb Buchtela@pef.czu.cz 30
Proces čtení z paměti / zápisu z do paměti Čtení z paměti / zápis do paměti probíhá následovně: Adresová jednotka nejdříve hledá zobrazení adresy stránky na adresu rámu v TLB cache Nenajde-li v TLB, hledá v tabulce stránek (možný výpadek stránky) Je-li známa fyzická adresa, hledá její obsah v cache paměti (mezi procesorem a hlavní pamětí) Není-li obsah paměti v cache, obrátí se na hlavní paměť Buchtela@pef.czu.cz 31
Proces čtení z paměti / zápisu z do paměti logická adresa TLB řádek tabulky stránek není v TLB Cache stránka posuv řádek tabulky stránek je v TLB TAG + TAG Tabulka stránek nesouhlasí tag + Hlavní paměť Souhlasí tag, obsah adresy je v cache Buchtela@pef.czu.cz 32
Děkuji za pozornost! Příští přednáška: Přerušovací systémy, sběrnice a komunikace po sběrnici