Správa pamäte je jednou zo základných funkcií operačného systému. Moderné operačné systémy umožňujú každému procesu získať viac virtuálnej pamäte, ako je celková veľkosť skutočnej (fyzickej) pamäte v danom počítačovom systéme. Hlavným cieľom správy pamäte je to, že kombináciou veľkej, ale pomalej pamäte s malou, ale vysokorýchlostnou pamäťou sa dosiahne efekt väčšej vysokorýchlostnej pamäte..
Oddelenie medzi pevným a variabilným rozdelením je z hľadiska využitia pamäte neefektívne, pretože pevné rozdelenie má za následok interné, zatiaľ čo dynamické externé fragmentovanie. Možným riešením problému fragmentácie je umožniť, aby sa proces nezapisoval do súvislého pamäťového bloku. Program môže byť ľubovoľne rozptýlený v pamäti. V tomto prípade je pracovná pamäť rozdelená do menších blokov s pevnou veľkosťou nazývaných rámce. Logický adresný priestor programu je tiež rozdelený do blokov rovnakej veľkosti, ktoré sa nazývajú stránky. Po zadaní programu do pamäte sa stránky zapíšu do rámcov voľnej pamäte. Pre ľahší prenos programov z disku do pracovnej pamäte sa disk tiež rozdelí na snímky rovnakej veľkosti ako pamäťové snímky. Jeden rámec z disku sa teda zapíše do jedného rámca pracovnej pamäte. Stránkovací systém funguje nasledujúcim spôsobom: keď je program prijatý na vykonanie, vypočíta sa jeho veľkosť, ktorá sa vyjadrí s požadovaným počtom strán. Ak je k dispozícii dostatočný počet snímok, proces sa zaznamená na stránku s pamäťou na stránku. Zároveň sa do tabuľky rámcov zapíše počet rámcov, v ktorých je každá stránka napísaná.
Užívateľský program a súvisiace údaje možno rozdeliť do niekoľkých segmentov. Segmenty všetkých programov nemusia mať rovnakú veľkosť, hoci existuje maximálna dĺžka segmentov. Rovnako ako pri stránkovaní, logická adresa, ktorá používa segmentáciu, pozostáva z dvoch častí, v tomto prípade z počtu segmentov a dislokácií v tomto segmente. Z dôvodu použitia segmentov rôznych veľkostí je segmentácia podobná dynamickému rozdeleniu. Ak neexistuje schéma prekrytia alebo použitie virtuálnej pamäte, je potrebné, aby sa do programu na vykonanie načítali všetky programové segmenty. Rozdiel v porovnaní s dynamickým rozdelením na oddiely spočíva v tom, že segmentácia môže trvať viac ako jeden oddiel a tento oddiel nemusí susediť. Segmentácia rieši problém vnútornej fragmentácie, ale aj pri dynamickom rozdelení zostáva problém externej fragmentácie. Pretože je však proces rozdelený na niekoľko menších častí, vonkajšia fragmentácia je zvyčajne menšia. Na rozdiel od stránkovania, ktoré je pre programátora neviditeľné, je segmentácia zvyčajne viditeľná a vhodná na organizovanie programov a údajov. Na účely modulárneho programovania sa program alebo dáta môžu ďalej rozdeliť do niekoľkých menších segmentov. Nevýhodou tejto techniky je, že programátor musí poznať obmedzenia maximálnej veľkosti segmentu. Ďalšou výhodou použitia segmentov rôznych veľkostí je to, že neexistuje žiadne potenciálne spojenie medzi logickými a fyzickými adresami. Podobne ako pri stránkovaní, aj v technike jednoduchých segmentácií sa používa tabuľka segmentov pre každý proces a zoznam dostupných blokov v hlavnej pamäti.
Stránkovanie poskytuje virtuálny a fyzický adresný priestor a sekundárne pamäťové miesto na blokoch (stránkach) s rovnakou dĺžkou. To umožňuje, aby bol kontinuálny virtuálny adresový priestor pridelený procesu rozptylu (nie nevyhnutne nepretržite distribuovaný) v reálnom adresnom priestore a sekundárnej pamäti. Dokonca aj stránka ako termín označuje skôr pamäť ako logické objekty, ktoré sú viditeľné na úrovni programu. Segmentácia poskytuje virtuálny adresný priestor na blokoch (segmentoch), ktoré priamo zodpovedajú objektom na úrovni programu. Z tohto dôvodu segment nemá pevnú dĺžku, takže aj veľkosť segmentu sa môže počas vykonávania programu zmeniť. Ochrana a delenie sú preto možné na úrovni objektov a existujú segmenty, v ktorých sa vykonáva segmentácia.
Vývojár aplikácií nepozná stránkovanie. Píše programy, ako keby bola pamäť lineárna, a operačný systém a procesor sa zaujímajú o jeho rozdelenie a prevod na virtuálne adresy. Programátor v segmentačných systémoch však vo svojich programoch uvádza dve časti adresy, segmentu a stránky. Všetky stránky majú rovnakú veľkosť, zatiaľ čo segmenty sú rôzne. Segmentácia má viacero lineárnych adresných priestorov a paging iba jeden. Segmenty umožňujú logické rozdelenie a ochranu komponentov aplikácie a stránky nie.
Stránkovanie, ktoré je pre programátora priehľadné, vylučuje externú fragmentáciu, a tým zaisťuje efektívne využitie hlavnej pamäte. Kusy, ktoré sa pohybujú dovnútra a von z hlavnej pamäte, sú pevné a majú rovnakú veľkosť, takže je možné vyvinúť sofistikované algoritmy správy pamäte, ktoré využívajú správanie programu. Segmentácia je viditeľná pre vývojárov a má schopnosť riadiť rast dátovej štruktúry, modularity a podporu výmeny a ochrany..
paging | segmentácia |
pevná veľkosť stránok | segmenty nemajú pevnú veľkosť |
neviditeľné pre programátora | viditeľné pre programátora |
jeden lineárny adresný priestor | viacnásobné lineárne adresné priestory |
nepovoľuje logické rozdelenie a ochranu komponentov aplikácie | umožňuje |