View
74
Download
7
Category
Preview:
DESCRIPTION
Operačné systémy. Ústav informatiky. Kapitola : 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 - PowerPoint PPT Presentation
Citation preview
Operačné systémy
Ústav informatiky
Kapitola: 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
• 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šetky procesy 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ý registerPár registrov: bázový (relokačný) register a limitný register
definujú logický adresový priestor
operačnýsystém
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
Pamäť
relokačný register
logickáadresa
fyzickáadresa
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)
hlavná pamäť
záložná pamäť
operačnýsystém
používateľskýpriestor
Odkladanie na disk (Swapping)- priebeh v čase
Pridelenie pamäti sa mení, keď procesy: 1. prichádzajú do pamäti 2. opúšťajú pamäť
Šrafované plochy predstavujú nepoužitú pamäť.
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
Plynutie času
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
pamäťSW prerušenie a správa monitoru OS:Chyba adresovania
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
proces 5
proces 8
proces 2
OS
proces 5
proces 2
OS
proces 5
proces 2
OS
proces 5
proces 9
proces 2
proces 9
proces 10
Príklad: Monoprogramový OS bez odkladania (swapping) a bez stránkovania
3 jednoduché spôsoby organizácie pamäti pri OS s jedným používateľským procesom
Používateľskýprogram
Používateľskýprogram
Používateľskýprogram
Operačnýsystémv RAM
Operačnýsystémv RAM
Operačnýsystémv ROM
Ovládacieprogramy v ROM
Pevná veľkosť pamäťových rámcov: a) Oddelené vstupné fronty pre každý rámec b) Jediný vstupný front
Príklad: Multiprogramový OS s pevnou veľkosťou rámcov
Rámec 1
Rámec 2
Rámec 3
Rámec 4
Rámec 1
Rámec 2
Rámec 3
Rámec 4
Operačnýsystém
Operačnýsystém
Viacnásobnévstupné fronty
Jedinývstupný front
Prideľovanie úsekov pamäti s premenlivou dĺžkouDynamic Storage-Allocation Problem
• 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 na uspokojenie požiadavky na pamäťový úsek o veľkosti n zo zoznamu voľných úsekov:
Algoritmy first-fit a best-fit sú lepšie než algoritmus worst-fit, ak je rozhodujúca rýchlosť a využitie pamäti.
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.
Začiatok zoznamu
Spojovaný zoznam
Prideľovací algoritmus
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.
Spojovaný zoznam
Prideľovací algoritmus
Začiatok zoznamu
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ž 8 192 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 2m a veľkosť stránky 2n
Číslo stránky Posuv v stránke
p dm - n n
Princíp stránkovania
fyzická pamäťtabuľka stránok
logická adresa fyzická adresa
Model stránkovania logickej a fyzickej pamäti
fyzická pamäť
logická pamäť
tabuľka stránok
číslorámca
Príklad stránkovania
32-bajtová pamäť a 4-bajtové stránky
logická pamäť
fyzická pamäť
tabuľka stránok
PRÍKLAD NA STRÁNKOVANIE
Logická adresa má dĺžku 16 bitovFyzická adresa má dĺžku 20 bitovStránky a rámce majú veľkosť 4 KBTabuľ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 bitovLA ~ 16 bitov; d ~ 12 bitov => p ~ 4 bityFA ~ 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 = 0001 1110 1101 1011 2 => f = 205 p = 1 d=3803 10
Fyzická adresa = 205 x 4096 + 3803 = 843 483
Obrázok k príkladu na predchádzajúcej snímke
fyzická pamäťtabuľka stránok
logická adresa:789910 =0001 1110 1101 1011 2
p = 1 d=3803 10
f = 205; d=3803 10
fyzická adresa:205 x 4096 + 3803
= 843 48310
1100 1101 1110 1101 10112
p = 1
f = 205
fyzická adresa: 205 x 4096 + 3803 = 843 48310 = 1100 1101 1110 1101 10112
1100 1101 1110 1101 10112
Voľné rámce:a) pred pridelením b) po pridelení
pred pridelením po pridelení
zoznam voľných rámcov zoznam voľných rámcov
tabuľka stránok procesu
nový proces nový proces
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
fyzická adresa
fyzická pamäť
tabuľka stránok
číslo stránky
číslo rámca
Ochrana pamätiMemory Protection
• Ochrana pamäti sa uskutočňuje pomocou bitov, ktoré sú pripojené ku každému rámcu.
• Bit Platná/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 je v logickom adresnom priestore procesu
Bit platná (v) alebo neplatná (i) v tabuľke stránok
číslo rámca
tabuľka stránok
Bit: v - platná i - neplatná
2-úrovňové stránkovanie
tabuľka stránok
vonkajšia 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ánok p2 je posuv v stránke vonkajšej tabuľky stránok
Číslo stránky Posuv v stránke
p1 p2 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álne premenné, globálne premenné,blok common ,zásobník (stack),tabuľka symbolov, polia
Používateľský pohľad na program
procedúra
zásobník
Tabuľka symbolov
Funkcia sqrt
Hlavný program
Logický adresový priestor
Logický pohľad na segmentáciu
1
3
2
4
1
4
2
3
Používateľský priestor Fyzická pamäť
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 segmentu s je platné, ak s < STLR
Princíp segmentácie
Fyzická pamäť
tabuľka segmentov
chyba adresácie
Príklad segmentácie
Logický adresový priestor
Tabuľka segmentov
fyzická pamäť
procedúra zásobník
Tabuľkasymbolov
Hlavnýprogram
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árnaadresa
fyzickáadresa
Číslo stránky Posuv v stránke
segmentačnájednotka
stránkovaciajednotka
fyzickápamäť
Segmentácia v Intel Pentiu
logická adresa
Tabuľka deskriptorov
32-bitová lineárna adresa
Deskriptor segmentu
Stránkovacia architektúra Pentia
PRÍKLAD NA SEGMENTÁCIU
Majme 4 segmenty (očíslované 0,1,2,3): HL_PROG, VELKE_POLE, MAT_FUNKCIE, ZASOBNIK s hodnotami TS ((l=300, b=10132), (4000, 12000), (500, 3324), (1400, 1450)). Logická adresa má dĺžku 16 bitov; z toho s ~ 4 bity; d ~ 12 bitovÚloha: Pre logickú adresu LA= 789910 určte s, d, a platnú fyzickú adresu FA.
Riešenie:LA ~ 16 bitov; d ~ 12 bitov => s ~ 4 bity
Logická adresa= 789910 = 0001 1110 1101 1011 2 s = 1 d=3803 10
Hodnoty v TS: ((l=300, b=10132), (4000, 12000), (500, 3324), (1400, 1450))s = 1; d=3803 10 => sme v segmente VELKE_POLEd=3803 10 < l=4000 => platná adresa,
Fyzická adresa = 12000 + 3803 = 15803
PRÍKLAD: Princíp segmentácieObrázok k príkladu na predchádzajúcej snímke
Fyzická pamäť
tabuľka segmentov
chyba adresácie
dĺžka začiatok
0 300 10132
1 4000 12000
2 500 3324
3 1400 1450
s = 1
Fyzická adresa =
12000 + 3803 = 15803
d=3803 10 4000
40004000
d=3803 10
Logická adresa= 789910 = 0001 1110 1101 1011 2 s = 1 d=3803 10
ÚLOHA: Vymenujte 2 rozdiely medzi logickou a fyzickou adresou
Odpoveď: 1.Logická adresa neodkazuje na aktuálnu existujúcu adresu;Odkazuje skôr na abstraktnú adresu v abstraktnom adresovom priestore.Fyzická adresa odkazuje na aktuálnu fyzickú adresu v pamäti.
2.Logická adresa je generovaná procesorom(CPU) a je preložená na fyzickú adresu pomocou jednotky správy pamäti (MMU).T.j. fyzické adresy sú generované jednotkou správy pamäti.
ÚLOHA: Uvažujte systém, v ktorom program môže byť rozdelený na 2 časti:Kód programu a dáta.Procesor (CPU) vie, či chce inštrukciu (instruction fetch) alebo dáta (data fetch or store). Preto musia existovať 2 páry bázových (relokačných)
a limitných registrov: jeden pár pre inštrukcie a jeden pár pre dáta.Pár registrov určený pre inštrukcie je automaticky typu read-only, takže programy môžu byť zdieľané rozdielnymi používateľmi.Prediskutujte výhody a nevýhody takejto schémy.
Odpoveď: Hlavná výhoda tejto schémy: je to efektívny mechanizmus na zdieľanie kódu a dát. Napríklad v pamäti je potrebné udržiavať len jednu kópiu editora alebo kompilátora a tento kód môže byť zdieľaný všetkými procesmi vyžadujúcimi prístup ku kódu editora a kompilátora.Ďalšia výhoda je ochrana kódu pred chybnou modifikáciou.Jedinou nevýhodou je, že kód a dáta musia byť oddelené, čo je zvyčajne dodržané v kóde generovanom kompilátorom.
ÚLOHA: Uvažujte logický adresový priestor s 8-mi stránkami. Každá stránka má veľkosť 1024 slov. Tento priestor je mapovaný do fyzickej pamäti pozostávajúcej z 32 rámcov.a) Určte z koľkých bitov pozostáva logická adresab) Určte z koľkých bitov pozostáva fyzická adresa
Odpoveď:
a.logická adresa má: 13 bitov
8 stránok × 1024 slov = 8192 ~ 213
b.fyzická adresa má: 15 bitov
32 rámcov × 1024 slov = 32768 ~ 215
Recommended