Memory - vjj root page
Transkript
Memory Management 9.12.2015 vjj 1 správa paměti • sledování stavu paměti • • free used • strategie přidělování paměti • techniky přidělování paměti • realizace uvolňování paměti 9.12.2015 vjj 2 kdy? • start programu • dynamické alokace? • • • RAM virtual memory heap • přerozdělování paměti • RAM vs. virtuální paměť 9.12.2015 vjj 3 historie • x-bitový pravěk • 32-ti bitový starověk – klasika (sálové počítače) • 8-mi/16-ti bitový středověk – doba temna • 32-ti bitový novověk – renesance • 32-ti/64-ti bitová současnost 9.12.2015 vjj 4 geneze • jedna souvislá oblast • sekce • dynamické přemisťování sekcí • stránkování • stránkování na žádost • segmentace • segmentace a stránkování na žádost 9.12.2015 vjj 5 pravěk srozumitelná jednoduchost 9.12.2015 vjj 6 jediná souvislá sekce • jednoduchost adresa v programu je skutečnou adresou ve fyzické RAM paměti počítače • privilegovaný • mezní registr – ochrana paměti OS • nevýhody: • 9.12.2015 • • x uživatelský stav nevyužita CPU i paměť omezení úloh velikostí paměti první (sálové) počítače a po desítkách let znovu první PC (DOS) vjj 7 • source Start 700 Define A A = A + <0x708> • compiler -> assembly language load A add <0x708> store A • compiler -> obj ( -> link -> exe ) load 0x700 add 0x708 store 0x700 9.12.2015 vjj 8 Von Neumann scheme ADD SUB ZA ∑ RAM input 3 20 010 28 100 data register instruction register 2 op. code 7 30 LOAD 28 address register 32 ADD 20 addr micro-programs 1 4 6 R W instruction counter 5 9.12.2015 vjj A +2 9 ranný starověk fixed number of partitions multitasking 9.12.2015 vjj 10 pevně dané sekce • výhody: multitasking • adresa v programu je relativní vůči počátku sekce • dynamické určení sekcí • • 9.12.2015 jednoduchá tabulka přidělených a volných sekcí nevýhody: • • zbytečné obsazení paměti nepoužitými částmi programu nevyužitá zbylá část sekce vjj 11 sekce free pgm 1 free pgm 2 free 9.12.2015 vjj 12 ? source compiler -> obj ( -> link -> exe ) A = A + B compiler -> assembly language load A add B store A 9.12.2015 load 0x700 add 0x708 store 0x700 loader -> RAM (5th partition) vjj load 0x4700 add 0x4708 store 0x4700 13 Base register store A = A + B *, BaseReg . . . store *, BaseReg load 0x700 add 0x708 store 0x700 store . . . 0x4000,BaseReg . . . load A load 0x700+BaseReg add B add 0x708+BaseReg store A store 0x700+BaseReg 9.12.2015 vjj 14 rozvinutý starověk variable number of partitions -> dynamické sekce 9.12.2015 vjj 15 sekce free pgm 1 free pgm 2 free 9.12.2015 vjj 16 starověk - dynamické sekce • přidělování oddělených sekcí • adresy v každé části programu jsou modifikovány jiným segmentovým registrem • nevýhody: fragmentace paměti • virtuální paměť (skoro) • 9.12.2015 není třeba umístit do paměti celý program najednou, dodatečně potřebné moduly mohou být v samostatné části, které se sekce paměti přidělí až když to je zapotřebí vjj 17 dynamické přemisťování sekcí • compaction, recompaction, relocation • • • • hned po uvolnění paměti až podle potřeby když je čas když je to výhodné (???) • • typ + data relokační registr, limit • přeadresování • výhody: eliminace fragmentace • nevýhody: cena, čas, vždy celé moduly 9.12.2015 vjj 18 vrcholný starověk zlatá éra virtuální paměť 9.12.2015 vjj 19 stránkování • adresový prostor programu rozdělen na stránky (logické stránky) (4 kB) • fyzická paměť rozdělena na rámce (fyzické stránky) (4 kB) • transformace adres pomocí tabulek stránek • překlad adres z logických na fyzické provádí procesor • výhody: eliminace fragmentace • nevýhody: složitější HW, práce s tabulkami, v RAM je vždy celý program 9.12.2015 vjj 20 přepočítávání adres load 0x3700 add 0x3708 store 0x3700 PGM page 0 RAM frame 96 1 403 2 12 3 87 0x3700 = = page 3 + 0x700 = frame 87 + 0x700 9.12.2015 vjj 21 stránkování na žádost • virtual memory proč virtuální? • fyzické rámce jen pro stránky, které jsou skutečně používány • tj. celkový počet stránek všech programů, ale dokonce i jediného programu, může překročit celkový počet fyzických rámců RAM 9.12.2015 vjj 22 stránkování na žádost • stránka alokována – příznak VALID tj. informace o tom, že odpovídající řádek v tabulce stránek byl již inicializován • výpadek stránky – příznak PRESENT tj. údaj v tabulce stránek o tom, ve kterém fyzickém rámci je stránka umístěna, je platný • algoritmy nahrazování stránek – hledání oběti • 9.12.2015 • • • • • FIFO LRU – Least Recently Used NUR – Not Used Recently – algoritmus druhé naděje – příznak ACCESSED clock algorithm – varianta NUR sdružování dvojic ukládání změn jen když to je nutné – příznak DIRTY vjj 23 tabulka stránek PGM page 9.12.2015 VALID PRESENT RAM ACCESSED frame DIRTY 0 1 1 96 0 0 1 1 0 403 0 0 2 1 1 12 1 1 3 0 0 87 0 0 vjj 24 stránkování knihovna - dokument - šanon - stránka knihovník 9.12.2015 vjj tabulka 1 úředník 1 tabulka 2 úředník 2 tabulka 3 úředník 3 25 stránkování na žádost knihovna - dokument - šanon - stránka sklad 9.12.2015 skladník knihovník vjj tabulka 1 úředník 1 tabulka 2 úředník 2 tabulka 3 úředník 3 26 segmentace • logické seskupení informací • důsledné dotažení myšlenky algoritmu sdružování dvojic • dynamické sestavovaní / linkování – předchůdce DLL • sdílené segmenty • tabulka segmentů • ochrana segmentů • nevýhoda: fragmentace 9.12.2015 vjj 27 segmentace • segment – sada vlastních relativních adres + index (selektor) do tabulky deskriptorů • deskriptor popisuje blok virtuální paměti Program segment 1 Virtuální paměť tabulky deskriptorů segment 2 9.12.2015 vjj 28 segmentace a stránkování na žádost • konec šedesátých let minulého století • vrchol memory managementu v operačních systémech sálových počítačů 9.12.2015 vjj 29 virtuální paměť Virtuální paměť disk Virtuální paměť RAM pgm modul 2 pgm modul 2 pgm modul 1 data modul 1 pgm modul 1 data modul 1 data modul 2 data modul 2 pgm modul 1 pgm modul 2 sys modul 1 sys modul 2 9.12.2015 data modul 2 data modul 1 sys modul 1 sys modul 1 sys modul 1 sys modul 2 sys modul 2 vjj sys data sys modul 2 30 středověk minipočítače, první PC PC 1024 1024 CPU 16 bitů 24 bitů RAM 640 kB 384 memory 1024 kB 0000 512 kB -> 640 kB -> 1 MB -> 16 MB 383 HW 0000 9.12.2015 vjj 32 DOS • (jediný společný) adresový prostor 1 MB • offset (16 bitů) + segment (16 bitů) = adresa (20 bitů) 1 16 2 ... F F F F F F F F ... F F F F F 0 F F E F B 64*1024 B 64 kB 1 MB 64 kB 16 B 9.12.2015 vjj 33 A = A + B store *, BaseReg store dataSeg, DataReg . . . store store . . . load add store 9.12.2015 *, CodeReg dataSeg, DataReg load 0x700 add 0x708 store 0x700 store store . . . load add store A B A vjj 0x4000, CodeReg 0x5000, DataReg 0x700 + DataReg 0x708 + DataReg 0x700 + DataReg 34 adresový mód Windows 3.x • reálný (max 640 kB RAM) - 8086 • standardní (max 16 MB, RAM) - 80286 • enhanced (max 16 MB, RAM a swap file) - 80386 16 𝑀𝐵 = 224 𝐵 9.12.2015 vjj 35 kouzla a čáry 16 MB RAM 15 MB 1 MB 1024 CPU 16 bitů 24 bitů RAM 640 kB 384 memory 1024 kB 0000 383 64 kB HW 0000 9.12.2015 vjj 36 Windows 3.x • nepreemptivní multitasking: Windows + všechny aplikace = jediný proces • vlastní správa paměti • hadle <-> adresa • zamykání segmentů • defragmentace 9.12.2015 vjj 37 Windows 3.x • jeden společný, reálný, adresový prostor pro RAM • DOS • program Windows 3.x 2. aplikace • všechny Win16 aplikace 3. aplikace • retro: • • 9.12.2015 1. aplikace smartphones Windows Metro Windows DOS vjj 38 novověk 32-bitů virtual memory 9.12.2015 vjj 39 Intel 1. logická adresa: offset a (impl./expl.) registr registr = selektor = index do tabulky deskriptorů deskriptor: bázová adresa a limit segmentu 2. lineární/virtuální adresa = ( báze + offset ) 32 bitů => virtuální adresový prostor 4 GB 3. fyzická adresa: tabulky stránek 9.12.2015 vjj 40 1. - logická adresa • selektor (16 bitů) • segmentové registry: CS, DS, ES, SS, FS, GS • offset (32 bitů) 9.12.2015 vjj 41 tabulky deskriptorů • standardní deskriptor segmentu 9.12.2015 • začátek segmentu ve virtuální paměti • velikost segmentu • granularita • Descriptor Privilege Level (1 byte vs. vjj 4 kB) 43 tabulky deskriptorů • GDT – globální jediná pro celý systém, informace o segmentech obsahujících TSS, LDT, IDT, ... • LDT – lokální jedna pro každý proces, informace o jednotlivých segmentech procesu • IDT – Interrupt Descriptor Table 9.12.2015 vjj 44 segmentace • oddělení kódu a dat, ... GDT Virtuální paměť IDT segment 1 tabulky deskriptorů segment 2 9.12.2015 vjj 45 2. virtuální adresa Virtuální paměť disk Virtuální paměť RAM pgm modul 2 pgm modul 1 pgm modul 2 data modul 1 pgm modul 1 data modul 1 data modul 2 pgm modul 1 data modul 2 pgm modul 2 sys modul 1 data modul 2 data modul 1 sys modul 2 9.12.2015 vjj sys modul 1 sys modul 1 sys modul 1 sys modul 2 sys modul 2 sys data sys modul 2 47 Windows 95, 98, Me • 2 GB privátního virtuálního prostoru – obsahuje moduly aplikace (EXE, DLL) • další 2 GB přístupné pouze pro systém: 9.12.2015 • 1 GB sdíleného virtuálního prostoru – (změny provedené jedním procesem se ihned projeví ve všech ostatních procesech) obsahuje systémové moduly !!! • 1 GB systém (ring 0) vjj 48 9.12.2015 vjj 49 NT, W2K, XP, W2K3, W7 • 2 GB privátního virtuálního prostoru • • • moduly aplikace (EXE, DLL) systémové moduly (copy-on-write) sdílená paměť • 2 GB systém (ring 0) - přístupné pouze pro systém • • W2K a W2K3 mají možnost dělení 3:1 9.12.2015 DataServer používá toto rozdělení standardně vjj 50 3. - fyzická adresa • Lineární adresa rozdělena na 3 části: • bity 31 - 22 adresář tabulek stránek (1024 tabulek) • bity 21 - 12 tabulka stránek (1024 stránek) • bity 11 - 0 offset (12 bitů -> stránka = 4 kB) • ---------------------------------------------------1024 x 1024 x 4 kB = 4 GB 9.12.2015 vjj 55 stránkování • virtuální adresy obsahují index (indexy) do tabulky (tabulek) stránek a offset • transformace adres pomocí tabulek stránek Virtuální paměť process RAM tabulka stránek tabulka stránek adresář tabulek stránek tabulka stránek 9.12.2015 vjj 58 rozdělení úkolů • • 9.12.2015 HW - procesor • při provádění instrukce vyhledá podle tabulek stránek v RAM obsah adresy uvedené v instrukci • pokud podle tabulek stránek není stránka v paměti přítomna interrupt - výpadek stránky SW - operační systém • při alokaci paměti vyhledá podle VAD vhodné místo ve virtuální paměti a podle toho upraví záznamy v tabulkách stránek, v tabulkách souborů a ve VAD • • • pokud to je nutné, vybere nejdřív oběť podle příznaků určí, jestli je nutné stránku zapsat zpět na disk podle údajů v tabulkách souborů určuje kam a odkud se mají stránky zapisovat nebo číst vjj 59 Page Table Entry • 9.12.2015 0 1 2 3 4 5 6 7 8 9 10 11 12-31 V W O Wt Cd A D PDE Gl Cw P U PFN Valid Write (writable on MP system) Owner (K/U) Write through Cache disabled Accessed Dirty large page Global reserved reserved reserved (writable on MP system) Page Frame Number vjj 62 TLB 9.12.2015 vjj 64 System Memory Pool • Nonpaged pool • • • • části systémového virtuálního prostoru stále v RAM přístup k nim nemůže způsobit výpadek stránky nutné při zpracování přerušení • Paged pool • • 9.12.2015 části systémového virtuálního prostoru mohou být vystránkovány vjj 65 Working Set • množina virtuálních stránek každého procesu a Systému přítomných v RAM • private • paged pool • size trimming 9.12.2015 x shared x nonpaged pool vjj 67 Windows • při HW výpadku stránky je načten rovnou celý "cluster" stránek: • • data - 4 stránky kód - 8 stránek • výběr oběti: • 9.12.2015 local NUR (clock algorithm) NT, W2K on multiprocessor systems: vjj local FIFO 68 memory queues Active 1 process Modified process 3 Standby 4 process 2 1. 2. 3. 4. 5. dirty page removed from working set clean page removed from working set modified page writer page deallocated Zero-page thread clears page Free system 5 Zeroed system memory queues Active 1 process Modified Standby Free Zeroed process process system system 2 3 1. "soft" page fault 2. "soft" page fault 3. page read from disk or kernel allocations 4. demand zero page fault 4
Podobné dokumenty
Technologie počítačových sítí 6. přednáška
doc. PhDr. Milan Klement, Ph.D.
Příklad neřešil problém sériové linky propojující firmu s Internetem. To je třeba projednat
vždy s poskytovatelem. Možná, že se vám zdá, proč připojovat jednotlivé ...
Téma 4: Adresy a adresování v TCP/IP, IP adresy verze 4
• pokud se dvě síťová rozhraní nachází ve stejné síti, musí mít jejich IP adresy
stejnou síťovou část (network ID)
• a naopak různé relativní části (host ID)
• pokud se dvě síťová rozhraní nachází ...
Seznam účastníků, program po sekcích a sborník abstraktů
Návrh zařízení pro přenos obrazového signálu pro dálkově řízené modely.
Krýda, P.
Tato práce se zabývá vytvořením systému přenosu obrazu z kamery nesené vzdáleným prostředkem do přijímací stanice. ...
pouze režim adaptéru - Rockwell Automation
Network Communication Option Module Installation Instructions, publikace 750COM-IN002