1. Argumentácia:
Tento text som si vybral, pretože spadá do môjho odboru a jednoduchým spôsobom vysvetľuje
vybranú problematiku správy pamäte a stránkovania. Tieto akcie sa odohrávajú na pozadí v každom
počítači a väčšina z užívateľov o nich ani nevie. Názov odborného textu odpovedá zvolenej tematike.
Kľúčové slová:
stránkovanie, program, adresný priestor, pamäť
Anotácia:
Odborný text opisuje problematiku stránkovania a prístupu do pamäte, ktoré vykonáva procesor pri
svojej činnosti. V bodoch je vysvetlené čo sa vyžaduje od správy pamäte a kroky, ktoré sa vykonávajú
pri vytváraní programu (prideľovanie pamäte, prevody medzi logickým a fyzickým adresným
priestorom pomocou jednotky pre správu pamäte).
Správá pámáte (stránkovánie)
V minulosti sa správa pamäte skoro nevyužívala. Výhody prvých počítačov bez správy pamäte
(s priamym prístupom) boli rýchlosť, jednoduchosť implementácie a možnosť používania aj bez
operačného systému. Nebolo možné kontrolovať prístup do RAM. Počítače do 70. rokov minulého
storočia nedisponovali veľkým množstvom pamäte, a preto nebola jej správa potrebná. Ako sa pamäť
zväčšovala, pribúdali nové problémy, a preto bolo potrebné nájsť riešenia, ako ju čo najefektívnejšie
využiť.
1.1 Význam
Spáva pamäte je z hľadiska operačného systému neodmysliteľnou súčasťou moderných
počítačov. Zjednodušene je jej funkciou alokovanie častí pamäte na žiadosť programov a ich
uvoľňovanie (dealokácia), keď už viac nie sú potrebné. Zaisťuje, aby zdieľanie pamäte medzi súčasne
bežiacimi procesmi bolo efektívne a bezpečné, udržiava informácie o stave obsadenosti adresného
priestoru a aktualizuje tabuľku stránok. Zabezpečuje ochranu pamäte a pri multitaskingových
systémoch musí podporovať (alebo minimálne nesmie brániť) súčasnému behu viacerých procesov.
Správa pamäte patrí medzi činnosti OS. Bolo by nevhodné a nepraktické, v niektorých prípadoch aj
2. nebezpečné ponechať ju na programátorovi pri programovaní aplikácií. Procesy majú takto presne
určené, ktorú pamäť smú a nesmú používať. Proces nesmie čítať a zapisovať mimo pamäť, ktorá mu
bola alokovaná a teda nie je možné, aby získal prístup k pamäti iného procesu, alebo OS.
Od správy pamäte vyžadujeme:
Možnosť relokácie programov (relocation) – programy v pamäti môžu byť umiestnené
v rôznych častiach pamäte v rôznom čase. Je to tak preto, že pri swapovaní (odkladanie častí
programov) na pevný disk a jeho opätovnom vrátení do hlavnej pamäte sa proces nemôže
vždy vložiť na to isté miesto. Odkazy na pamäťové miesta uvedené programom sa musia
prekladať na skutočné adresy (viď kapitola 1.2).
Nutnosť ochrany (protection) – kontrola adries hardvérom pri behu spusteného programu.
Keďže adresy v programe kvôli ich prekladu nezodpovedajú skutočným adresám na pamäti
RAM, je kontrolu možné vykonávať len za behu.
Možnosť zdieľania (sharing) – zdieľanie rovnakej časti pamäte viacerými procesmi súčasne
bez toho, aby bola porušená ochrana pamäte. Zdieľaná pamäť je zároveň jedna
z najrýchlejších metód medziprocesovej komunikácie.
Logická organizácia (logical organisation) – programy sú často organizované v moduloch.
Niektoré z nich môže zdieľať viac programov naraz, iné sú určené len na čítanie (read-only)
a niektoré obsahujú dáta, ktoré môžu byť zmenené (read/write). Moduly poznáme privátne
a verejné. Logickú organizáciu dosahujeme využitím segmentácie.
Fyzická organizácia (physical organisation) – pamäť je zvyčajne rozdelená na rýchlu-primárnu
(RAM) a pomalšiu-sekundárnu (pevný disk) pamäť. Správa pamäte spravuje presun informácií
medzi týmito úrovňami pamätí.
3. Obr. 1.: Proces vytvárania programu
Aby sa z programu spustením stal proces, je nutné, aby sa adresy inštrukcií v programe
naviazali na adresy operačnej pamäte. Procesor je schopný vykonávať len inštrukcie, ktoré sú uložené
v primárnej pamäti. Adresný priestor sa delí na FAP (Fyzický adresný priestor) a LAP (Logický adresný
priestor). Adresa FAP je adresa operačnej pamäte. Adresa LAP (logická) je virtuálna adresa daná
adresou v strojovom jazyku, ktorú generuje CPU. Je to adresa hypotetickej pamäte a môže odkazovať
na RAM alebo pevný disk.
1.2 Adresný priestor
Adresný priestor vymedzuje adresy cieľových objektov (napr. všetky internetové domény sú
adresný priestor). Adresný priestor príkazov programov interpretovaných procesorom je škála adries
4. hlavnej pamäte. V súčasných počítačoch je jeho úlohou umožniť každému procesu používať vlastnú
abstrakciu adresného priestoru. Proces má takto pridelený virtuálny adresný priestor a môže svoje
inštrukcie adresovať od nuly, aj keď skutočné adresy v čase behu vo FAP môžu byť (a vo väčšine
prípadov sú) iné.
Obr. 2.: Viazanie adries
Viazanie adries (address binding) môže mať tri podoby:
Pri kompilácii – ak je umiestnenie známe pred kompiláciou je možné generovať absolútny
kód, ale pri zmene umiestnenia sa musí preklad programu znova opakovať.
Pri zavádzaní – umiestnenie v pamäti nie je známe pred kompiláciou. Aby bolo možné
program spustiť, generuje sa premiestniteľný kód (relocatable code).
Za behu – proces mení svoju pozíciu za behu a samotné viazanie adries sa odkladá na dobu
behu. Základnou podmienkou tohto viazania je hardvérová podpora a to buď MMU, alebo
DAT (Dynamic Address Translation).
1.2.1 Memory Management Unit a relokačný register
MMU (Memory Management Unit) alebo jednotka pre správu pamäte je hardvérový modul
prevádzajúci logické adresy na adresy fyzické (a naopak). MMU delí virtuálny adresný priestor (LAP)
na rovnako veľké stránky.
5. Najjednoduchšou formou MMU je relokačný (bázový register). Na počiatku sa nastaví spodná
hranica adresy pridelenej procesu vo FAP. Preklad adries následne spočíva v pripočítavaní obsahu
relokačného registru k adresám inštrukcií užívateľského procesu v okamihu, keď sú tieto adresy
odovzdávané ako ukazovatele do operačnej pamäte. Relokačný register je privilegovaný a je
dostupný len pre operačný systém.
Obr. 3.: Relokačný register
1.3 Metódy prideľovania pamäte
Historické techniky správy pamätí boli napr. prideľovanie súvislých oblastí (partitioning) vo
FAP na beh procesov, prideľovanie fixných oblastí, oblastí s premennou veľkosťou a prideľovanie
pamäte s prekryvmi (overlays). V súčasnosti sa tieto techniky používajú v špeciálnych OS a v real-time
OS. Ich efektivita je zvýšená možnosťou presúvať obsah alokovaných oblastí z hlavnej pamäte na
pevnú a naopak – ide o metódu nazvanú Swapping. Dáta, ktoré neboli dlhšie použité, je možné
presunúť na pevný disk (swap out) pri nedostatku pamäte RAM, aby do nej mohli byť zavedené (swap
in) iné, potrebné dáta. Swapping bol používaný v systémoch Linux alebo Windows v čase, keď ešte
nepodporovali virtualizáciu.
6. Odborné zdroje:
LEVINE, John R. Linkers and loaders. San Francisco: Morgan Kaufmann, 2000, xv, 256 s. ISBN 15-586-
0496-0.
John Levine je známy autor mnohých kníh a expert v svojom odbore, preto nepochybujem
o odbornosti tejto knihy.
KOLÁŘ, Petr. Operační systémy [online]. Liberec: 2005-02-01. S. 38-53 [cit. 2013-01-04]. Dostupné z:
http://www.nti.tul.cz/~kolar/os/
Petr Kolář je erudovaný odborník vyučujúci na Technickej Univezite v Liberci, vyštudoval
Karlovu Univerzitu a jeho učebný materiál tak môžem považovať za relevantný.
Communications of the ACM: a monthly publication of the ACM Publications Office [online]. New
York: Association for Computing Machinery, [cit. 2013-01-04]. MEMORY management (Computer
science). ISSN 0001-0782.
Association for Computing Machinery (ACM) publikuje mesačne odborné články, ktorých
autori pracujú a vykonávajú výskum v odbore informačných technológií. Konkrétny článok
z ktorého som čerpal informácie do mojej odbornej práce (Memory management) obsahoval
odborníkmi spracovanú časť o základoch správy pamäte.