Rozdíl mezi stránkováním a segmentací

Správa paměti je jednou ze základních funkcí operačního systému. Moderní operační systémy umožňují každému procesu získat více virtuální paměti, než je celková velikost skutečné (fyzické) paměti v daném počítačovém systému. Hlavním cílem správy paměti je, že kombinací velké, ale pomalé paměti s malou, ale vysokorychlostní pamětí, se dosáhne účinku větší vysokorychlostní paměti.

Co je stránkování?

Rozdělení mezi pevným a variabilním dělením je z hlediska využití paměti neefektivní, protože pevné dělení má za následek interní, zatímco dynamické externí dělení. Možným řešením problému fragmentace je umožnit, aby proces nebyl zapsán do souvislého paměťového bloku. Program může být libovolně rozptýlen v paměti. V tomto případě je pracovní paměť rozdělena do menších bloků pevné velikosti nazývaných rámce. Logický adresní prostor programu je také rozdělen do bloků stejné velikosti, nazývaných stránky. Po zadání programu do paměti se stránky zapíší do rámců volné paměti. Pro snadnější přenos programů z disku do pracovní paměti se disk také rozdělí na snímky stejné velikosti jako paměťové snímky. Jeden snímek z disku je tedy zapsán do jednoho snímku pracovní paměti. Stránkovací systém pracuje následujícím způsobem: když je program přijat k provedení, vypočítá se jeho velikost, která je vyjádřena s požadovaným počtem stránek. Pokud je k dispozici dostatečný počet rámců, proces se zaznamená na stránku paměti na stránku. Současně se do tabulky rámečků zadá počet rámců, ve kterých je každá stránka zapsána.

Co je segmentace?

Uživatelský program a související data lze rozdělit do několika segmentů. Segmenty všech programů nemusí být stejné velikosti, ačkoli existuje maximální délka segmentu. Stejně jako u stránkování se logická adresa, která používá segmentaci, skládá ze dvou částí, v tomto případě z počtu segmentů a dislokací v tomto segmentu. Vzhledem k použití segmentů různých velikostí je segmentace podobná dynamickému rozdělení. V případě, že neexistuje překryvné schéma nebo použití virtuální paměti, je nutné, aby byly všechny programové segmenty načteny do paměti pro provedení. Rozdíl ve srovnání s dynamickým rozdělením na oddíly spočívá v tom, že segmentace může trvat více než jeden oddíl a tento oddíl nemusí sousedit. Segmentace řeší problém interní fragmentace, ale stejně jako dynamické rozdělení, problém externí fragmentace přetrvává. Protože je však proces rozdělen do několika menších částí, je externí fragmentace obvykle menší. Na rozdíl od stránkování, které je pro programátora neviditelné, je segmentace obvykle viditelná a vhodná pro organizování programů a dat. Pro modulární programování lze program nebo data dále rozdělit do několika menších segmentů. Nevýhodou této techniky je, že programátor musí znát omezení maximální velikosti segmentu. Další výhodou použití segmentů různých velikostí je, že neexistuje žádné budoucí spojení mezi logickými a fyzickými adresami. Podobně jako stránkování používá jednoduchá technika segmentace tabulku segmentů pro každý proces a seznam dostupných bloků v hlavní paměti.

Rozdíl mezi stránkováním a segmentací

1. Koncepce stránkování a segmentace

Stránkování poskytuje virtuální a fyzický adresní prostor a sekundární paměťový prostor na blocích (stránkách) stejných délek. To umožňuje, aby byl kontinuální virtuální adresový prostor přidělen procesu disperze (nemusí být nutně kontinuálně distribuován) v reálném adresovém prostoru a sekundární paměti. Dokonce i stránka jako termín označuje spíše paměť než logické objekty, které jsou viditelné na úrovni programu. Segmentace poskytuje virtuální adresový prostor na blocích (segmentech), které přímo odpovídají objektům na úrovni programu. Z tohoto důvodu segment nemá pevnou délku, takže i velikost segmentu může být během provádění programu změněna. Ochrana a dělení jsou proto možné na úrovni objektů a existují segmenty, které jsou viditelné, když se provádí segmentace.

2. Charakteristika stránkování a segmentace

Vývojář aplikací nevědí o stránkování. Píše programy, jako by paměť byla lineární, a operační systém a procesor se obávají jeho rozdělení a převodu na virtuální adresy. Programátor v segmentačních systémech však ve svých programech uvádí dvě části adresy, segmentu a stránky. Všechny stránky mají stejnou velikost, zatímco segmenty jsou odlišné. Segmentace má více lineárních adresních prostorů a stránkování pouze jeden. Segmenty umožňují logické rozdělování a ochranu součástí aplikace a stránky tak neučiní.

3. Výhody stránkování a segmentace

Stránkování, které je pro programátora průhledné, eliminuje externí fragmentaci a zajišťuje tak efektivní využití hlavní paměti. Kusy, které se pohybují dovnitř a ven z hlavní paměti, jsou pevné a stejné velikosti, takže je možné vyvinout sofistikované algoritmy správy paměti, které využívají chování programu. Segmentace je viditelná pro vývojáře a má schopnost řídit růst struktury dat, modularitu a podporu pro výměnu a ochranu.

Stránkování vs. segmentace: srovnávací tabulka

Stránkování

Segmentace

pevná velikost stránek segmenty nemají pevnou velikost
neviditelné pro programátora viditelné pro programátora
jeden lineární adresní prostor více lineárních adresních prostorů
neumožňuje logické rozdělení a ochranu součástí aplikace umožňuje

Shrnutí stránkování a segmentace

  • Stránkování je založeno na distribuci celého adresního prostoru v blocích s pevnou délkou, které jsou provozovány jako kvantování paměti. Dále je nutné poskytnout prostředky pro označení dostupné paměti, které lze provést přítomností „hlavičky“ každé stránky označující stav stránky (globální propojený seznam, kde každý uzel ukazuje na další volnou stránku) nebo pomocí umístění bezplatné stránky do globálního pole, což je obvykle nejhorší řešení.
  • Segmentace znamená rozdělení adresního prostoru na segmenty, které mají jasně označená přístupová práva k procesoru MMU. V rámci segmentu procesy přidělují přesně tolik paměti, kolik potřebují, ale problém správy paměti spočívá v tom, jak zajistit takové alokace, kde může zachovat dostatečně velkou souvislou blokovou paměť, která může potřebovat nějaký čas..