590 likes | 1.35k Vues
Správa pamäti. Ciele. Poskytnúť podrobný opis rôznych spôsobov organizácie hardveru pamäti Prediskutovať rôzne techniky správy pamäti vrátane stránkovania a segmentovania Poskytnúť podrobný opis procesora Intel Pentium, ktorý podporuje aj čisté segmentovanie aj segmentovanie so stránkovaním.
E N D
Ciele • Poskytnúť podrobný opis rôznych spôsobov organizácie hardveru pamäti • Prediskutovať rôzne techniky správy pamäti vrátane stránkovania a segmentovania • Poskytnúť podrobný opis procesora Intel Pentium, ktorý podporuje aj čisté segmentovanie aj segmentovanie so stránkovaním
Program, ktorý sa má vykonávať, musí byť zavedený z disku do hlavnej pamäti • Aby program mohol byťvykonaný, musínad ním byťvytvorenýproces a musí mu byťpridelenápamäť • Hlavná (=operačná) pamäť a registre sú jediné pamäti, ku ktorým procesor (CPU) môže pristupovať priamo • Prístup k registru trvá jeden hodinový takt alebo aj menej • Hlavná pamäť môže spotrebovať aj viac hodinových taktov • Pamäť cache sa nachádza medzi hlavnou pamäťou a registrami procesora (CPU) • Ochrana pamäti je vyžadovaná, aby bola zaistená správna činnosť
Rozlišujeme: • FAP – fyzický adresový priestor - pamäť fyzicky prítomná v počítači - adresový priestor fyzických adries pamäti (spoločný pre všetkyprocesy i jadro) • LAP – logický adresový priestor- pamäť ako abstrakcia, na ktorú sa programy odvolávajú pri adresácii - virtuálny adresový priestor, s ktorým pracuje procesor pri vykonávaní kódu (každý proces i jadro majú svoj)
Bázový (relokačný) register a limitný register operačný systém Pár registrov: bázový (relokačný) register a limitný register definujú logický adresový priestor báza
Pridelenie adries (=address binding) sa môže vykonávať troma spôsobmi: • Počas prekladu programu - vznikne absolútny kód. Program sa dá zaviesť len na pevne určenú adresu v pamäti (.COM programy v MS-DOSe) • Počas zavedenia programu do pamäti - Relokovateľné (=premiestniteľné) adresy sa modifikujú podľa umiestnenia prog-ramu v pamäti. • Počas behu (vykonávania) programu – vyžaduje hardverovú podporu
Fázy spracovania používateľského programu Fáza prekladu Fáza zavedenia Fáza vykonávania
Jednotka správy pamäti (Memory-Management Unit-MMU) • Hardvérové zariadenie, ktoré transformuje logickú adresu na fyzickú adresu • Hodnota uložená v relokačnom registri je pripočítaná ku každej adrese generovanej používateľským procesom v čase, keď je adresa posielaná do pamäti a to sa deje pri • Čítaní inštrukcie programu (fetch) • Čítaní dát (load) • Zapisovaní dát (store) • Používateľský program narába s logickými adresami. Nikdy nevidí reálne fyzické adresy
Dynamická relokácia (premiestňovanie)použitím relokačného registra relokačný register logická adresa fyzická adresa Pamäť
Spôsoby efektívneho využívania primárnej (operačnej) pamäti na úrovni práce s používateľskými programami • Dynamické zavedenie (dynamic loading) programov • Dynamické zostavovanie (dynamic linking). • Prekrývanie (overlay). • Odkladanie stránok na disk (paging).
Dynamické zavedenie(Dynamic Loading) • Procedúra sa nenačíta z disku do pamäti, kým nie je poprvýkrát volaná z programu. • Lepšie využitie pamäti; nepoužívaná procedúra sa nikdy nezavedie • DL je užitočné, keď je potrebné narábať s veľkými množstvami kódu v nie často sa vyskytujúcich prípadoch • Nie je vyžadovaná žiadna špeciálna podpora od operačného systému
Dynamické zostavovanie(Dynamic Linking) • Zostavovanie odložené až do fázy vykonávania programu • Malý kúsok kódu - stub - použitý, aby lokalizoval vhodnú knižničnú procedúru rezidentnú v pamäti • Stub nahradí seba samého adresou procedúry a vykoná procedúru • Operačný systém zistí, či procedúra nie je používaná iným procesom • Dynamické zostavovanie je vhodné najmä pre knižnice programov • Tento systém je známy aj pod názvom zdieľané knižnice (shared libraries)
Odkladanie (na disk) (Swapping) • Proces môže byť dočasne odložený(presunutý) z pamäti do záložnej pamäti a potom presunutý naspäť do hlavnej pamäti, aby pokračovalo jeho vykonávanie. • Záložná (sekundárna) pamäť – je rýchly dostatočne veľký disk na ukladanie kópií všetkých obrazov pamäti pre všetkých používateľov; musí poskytovať priamy prístup k týmto obrazom pamäti • Väčšiu časť času odkladania tvorí čas presunu; celkový čas presunu je priamo úmerný veľkosti pamäti, ktorá sa odkladá (presúva) • Modifikované verzie odkladania sa nachádzajú v mnohých operačných systémoch (napr. UNIX, Linux, and Windows) • Systém udržiava front procesov pripravených na vykonávanie, ktoré majú svoj obraz pamäti na disku
Schematický pohľad na odkladanie (Swapping) operačný systém používateľský priestor záložná pamäť hlavná pamäť
Odkladanie na disk (Swapping) - priebeh v čase Plynutie času Operačný systém Operačný systém Operačný systém Operačný systém Operačný systém Operačný systém Operačný systém • Pridelenie pamäti sa mení, keď procesy: 1. prichádzajú do pamäti • 2. opúšťajú pamäť • Šrafované plochy predstavujú nepoužitú pamäť.
Súvislé prideľovanie pamäti(Contiguous Allocation) • Hlavná pamäť je zvyčajne rozdelená na 2 časti: • Rezidentný operačný systém je spravidla uložený v dolnej pamäti (nižšie hodnoty adries) spolu s vektorom prerušenia • Používateľské procesy sú udržiavané v hornej pamäti • Relokačný register je použitý, aby ochránil používateľské procesy navzájom a aby ochránil pred zmenou kód a dáta operačného systému pred pozmenením • Bázový (relokačný) register obsahuje hodnotu najnižšej fyzickej adresy • Hraničný register (Limit register)obsahuje rozsah logických adries – t.j. každá logická adresa musí byť menšia než hodnota v hraničnom registri • MMU mapuje logickú adresu dynamicky
Hardvérová ochrana adries bázovým a hraničným registrom SW prerušenie a správa monitoru OS: Chyba adresovania pamäť
Súvislé prideľovanieContiguous Allocation • Prideľovanie viacerých súvislých úsekov • Diera – blok voľnej pamäti; diery rôznych veľkosti sú roztrúsené po pamäti • Keď príde proces, pridelí sa mu pamäť z diery dostatočne veľkej na jeho uloženie • Operačný systém udržuje informáciu o:a) pridelených úsekoch b) voľných úsekoch (dierach) OS OS OS OS proces 5 proces 5 proces 5 proces 5 proces 9 proces 9 proces 8 proces 10 proces 2 proces 2 proces 2 proces 2
Príklad: Monoprogramový OS bez odkladania (swapping) a bez stránkovania Operačný systém v ROM Ovládacie programy v ROM Používateľský program Používateľský program Používateľský program Operačný systém v RAM Operačný systém v RAM 3 jednoduché spôsoby organizácie pamäti pri OS s jedným používateľským procesom
Príklad: Multiprogramový OS s pevnou veľkosťou rámcov Viacnásobné vstupné fronty Rámec 4 Rámec 4 Rámec 3 Jediný vstupný front Rámec 3 Rámec 2 Rámec 2 Rámec 1 Rámec 1 Operačný systém Operačný systém • Pevná veľkosť pamäťových rámcov: a) Oddelené vstupné fronty pre každý rámec • b) Jediný vstupný front
Prideľovanie úsekov pamäti s premenlivou dĺžkouDynamic Storage-Allocation Problem Algoritmy na uspokojenie požiadavky na pamäťový úsek o veľkosti n zo zoznamu voľných úsekov: • First-fit (=prvý vhodný): proces sa umiestni do prvého úseku, ktorý je dostatočne veľký. • Best-fit (=najlepšie vyhovujúci): procesu sa pridelí najmenší úsek, do ktorého sa zmestí. Musí sa prehľadať celý zoznam úsekov v prípade, že zoznam nie je usporiadaný podľa veľkosti úsekov. • Vytvára najmenšie Produces the smallest leftover hole • Worst-fit (najhoršie vyhovujúci): proces sa umiestni do najväčšieho voľného úseku. (kvôli tomu sa musí prehľadať celý zoznam úsekov.) • Vytvára najväčšie Produces the largest leftover hole Algoritmy first-fit a best-fitsú lepšie než algoritmus worst-fit, ak je rozhodujúca rýchlosť a využitie pamäti.
Spojovaný zoznam Prideľovací algoritmus Začiatok zoznamu Prideľovacia funkcia: Nájdi prvý voľný úsek (dieru) taký, aby bola splnená podmienka: S Ui Hodnotenie: Je výhodné, ak voľné úseky sú udržiavané v poradí ich adries.
Spojovaný zoznam Prideľovací algoritmus Začiatok zoznamu Voľné úseky sú v zozname usporiadané podľa veľkosti v rastúcej postupnosti. U1 U2 U3 ... Un Prideľovacia funkcia: Nájdi najmenšie Ui také, aby spĺňalo podmienku, že S Ui Hodnotenie: Najmešie plytvanie pamäťovým priestorom, ale necháva veľa malých nepoužiteľných dier.
Spojovaný zoznam Prideľovací algoritmus Začiatok zoznamu Voľné úseky sú v zozname usporiadané podľa veľkosti v klesajúcej postupnosti. U1 U2 U3 ... Un Prideľovacia funkcia: Nájdi najväčšie Ui také, aby spĺňalo podmienku, že S Ui Hodnotenie: Najväčšie plytvanie pamäťovým priestorom.
Vonkajšia a vnútorná fragmentácia • Vonkajšia fragmentácia – celkový voľný pamäťový priestor je dostatočne veľký, ale nie je spojitý • Vnútorná fragmentácia – pridelená pamäť môže byť o trochu väčšia než požadovaná veľkosť pamäti; tento rozdiel veľkosti je vo vnútri úseku, ale sa nevyužíva
StránkovaniePaging • Logický adresový priestor procesu môže byť nesúvislý. • Fyzická pamäť je rozdelená do blokov pevnej veľkosti, ktoré sa nazývajú rámce (frames). Veľkosť blokov je mocninou čísla 2. (512 bajtov, 1 KB, 2 KB, 4 KB až 8192 bajtov= 8 KB) • Logická pamäť je rozdelená na bloky rovnakej veľkosti, ktoré sa nazývajú stránky (pages) • Udržiava sa informácia o všetkých voľných rámcoch • Spustenie programu o veľkosti n stránok vyžaduje nájsť n voľných rámcov a zaviesť program do hlavnej pamäti • Nastavenie tabuľky stránok, aby sa dali prekladať logické adresy na fyzické
Schéma prekladu adries • Adresa generovaná procesorom je rozdelená na: • Číslo stránky (p) – sa používa ako index v tabuľke stránok. V tabuľke stránok sa nachádzajú odpovedajúce počiatočná adresa každej stránky vo fyzickej pamäti. • Posuv v rámci stránky(d)(offset)– kombinovaný s počiatočnou adresou stránky definuje fyzickú adresu, ktorá sa posiela do pamäťovej jednotky • Pre daný logický adresový priestor 2ma veľkosť stránky 2n Číslo stránky Posuv v stránke p d m - n n
Princíp stránkovania logická adresa fyzická adresa fyzická pamäť tabuľka stránok
Model stránkovania logickej a fyzickej pamäti číslo rámca tabuľka stránok logická pamäť fyzická pamäť
Príklad stránkovania tabuľka stránok logická pamäť fyzická pamäť 32-bajtová pamäť a 4-bajtové stránky
Príklad na stránkovanie Logická adresa má dĺžku 16 bitov Fyzická adresa má dĺžku 20 bitov Stránky a rámce majú veľkosť 4 KB Tabuľka stránok obsahuje položky: 100, 205, 33, 27, I, I, I, ..., I (I – značí neplatnú stránku) Úloha: Určte p, d, f, pre logickú adresu 789910 a veľkosť pamäti používanej procesom Riešenie: Veľkosť stránky/rámca = 4 KB = 4096 bitov = 212 bitov =>d~12 bitov LA ~ 16 bitov; d~12 bitov => p~4 bity FA ~ 20 bitov; d~12 bitov => f~8 bitov Položky TS: 100, 205, 33, 27, I, I, ... , I => proces používa 4 x 4KB= 16 KB pamäti Logická adresa= 789910 d= 7899-4096=380310 789910 = 00011110 1101 10112=>f = 205 p = 1 d=380310 Fyzická adresa = 205 x 4096 + 3803 = 843 483
Obrázok k príkladu na predchádzajúcej snímke f = 205; d=380310 fyzická adresa: 205 x 4096 + 3803 = 843 48310 1100 1101 1110 1101 10112 logická adresa: 789910 = 00011110 1101 10112 p = 1 d=380310 1100 1101 1110 1101 10112 p = 1 f = 205 fyzická pamäť tabuľka stránok fyzická adresa: 205 x 4096 + 3803= 843 48310 = 1100 1101 1110 1101 10112
Voľné rámce:a) pred pridelenímb) po pridelení zoznam voľných rámcov zoznam voľných rámcov nový proces nový proces tabuľka stránok procesu pred pridelením po pridelení
Implementácia tabuľky stránokHardvérová podpora stránkovania • Tabuľka stránok je uložená v hlavnej pamäti • Register tabuľky stránok(Page-table base register = PTBR)obsahuje adresu v pamäti, kde sa nachádza tabuľka stránok • Register dĺžky tabuľky stránok(Page-table length register PRLR)obsahuje informáciu o veľkosti tabuľky stránok • V tejto schéme každý prístup k dátam alebo inštrukcii vyžaduje 2 prístupy k pamäti. Jeden pre prístup k tabuľke stránok a jeden pre prístup k dátam resp. inštrukcii. • Dvojnásobný počet prístupov k pamäti môže byť riešený použitím špeciálnej rýchlej asociatívnej pamäti, ktorá sa nazýva asociatívna pamäť cache alebo translačné bufre: associative memory or translation look-aside buffers (TLBs)Bs store address-space identifiers (ASIDs) in each TLB entry – uniquely identifies each process to provide address-space protection for that process
Stránkovací hardvér s TLB logická adresa číslo stránky číslo rámca fyzická adresa fyzická pamäť tabuľka stránok
Ochrana pamätiMemory Protection • Ochrana pamäti sa uskutočňuje pomocou bitov, ktoré sú pripojené ku každému rámcu. • BitPlatná/Neplatná stránka je pripojený ku každej položke tabuľky stránok: • Platná (valid) – znamená, že stránka je v logickom adresnom priestore procesu a je teda platná • Neplatná (invalid) – znamená, že stránka nie jev logickom adresnom priestore procesu
Bit platná(v) aleboneplatná (i) v tabuľke stránok Bit: v - platná i- neplatná číslo rámca tabuľka stránok
2-úrovňové stránkovanie vonkajšia tabuľka stránok tabuľka stránok pamäť
Príklad 2 – úrovňového stránkovania • Logická adresa (na 32-bitovom počítači s veľkosťou stránky 1 KB ) je rozdelená na: • Číslo stránky pozostáva z 22 bitov • Posuv v stránke pozostáva z 10 bitov • Keďže tabuľka stránok je stránkovaná , číslo stránky je ďalej rozdelené na: • Na 12-bitové číslo stránky • Na 10-bitový posuv v stránke(page offset) • Logická adresa má potom nasledujúci tvar:kde p1 je index do vonkajšej tabuľky stránokp2 je posuv v stránke vonkajšej tabuľky stránok Posuv v stránke Číslo stránky p2 p1 d 12 10 10
Prevod adries pre 2 – úrovňové stránkovanie logická adresa vonkajšia tabuľka stránok tabuľka tabuľky stránok požadovaná stránka
Segmentácia • Prístup k správe pamäti, ktorý podporuje používateľský pohľad na pamäť • Program je súbor segmentov. Segment je logická jednotka ako napríklad: hlavný program, procedúra, funkcia, metóda, objekt, lokálnepremenné, globálne premenné, blok common , zásobník (stack), tabuľka symbolov, polia
Používateľský pohľad na program zásobník procedúra Tabuľka symbolov Funkcia sqrt Hlavný program Logický adresový priestor
1 4 2 3 Logický pohľad na segmentáciu 1 2 3 4 Fyzická pamäť Používateľský priestor
Architektúra segmentácieSegmentation Architecture • Logická adresa pozostáva z dvoch častí <číslo segmentu, posuv v segmente>, • Tabuľka segmentov – mapuje dvojrozmerné fyzické adresy; každá tabuľka má 2 položky: • Začiatok (base) – obsahuje začiatočnú fyzickú adresu, kde je segment uložený v pamäti • Dĺžka (limit) – určuje dĺžku segmentu • Register začiatku tabuľky segmentov(Segment-table base register - STBR)– ukazuje na tabuľku segmentov • Register dĺžky tabuľky segmentov (Segment-table length register - STLR)– informuje o počte segmentov použitých programom; číslo segmentusje platné, ak s < STLR
Princíp segmentácie tabuľka segmentov Trap: chyba adresácie Fyzická pamäť
Príklad segmentácie zásobník procedúra Tabuľka symbolov Hlavný program Tabuľka segmentov Logický adresový priestor fyzická pamäť
Príklad:Intel Pentium • Podporuje segmentáciu aj segmentáciu so stránkovaním • CPU generuje logickú adresu • odovzdávanú segmentačnej jednotke, • ktorá vytvára lineárne adresy • Lineárna adresa je odovzdávaná do stránkovacej jednotky, • ktorá generuje fyzickú adresu v hlavnej pamäti • stránkovacie jednotky vytvárajú ekvivalent MMU
Preklad logickej adresy na fyzickú v Pentiu logická adresa lineárna adresa fyzická adresa fyzická pamäť segmentačná jednotka stránkovacia jednotka Posuv v stránke Číslo stránky
Segmentácia v Intel Pentiu logická adresa Tabuľka deskriptorov Deskriptor segmentu 32-bitová lineárna adresa