A memóriakezelés az operációs rendszer egyik alapvető funkciója. A modern operációs rendszerek lehetővé teszik, hogy minden egyes folyamat több virtuális memóriát szerezzen, mint egy adott számítógépes rendszer tényleges (fizikai) memóriája. A memóriakezelés fő célja, hogy a nagyobb, de lassú memória és a kis, de nagysebességű memória kombinálásával elérje a nagyobb nagysebességű memória hatását.
A rögzített és a változó particionálás közötti szétválasztás a memória felhasználása szempontjából nem hatékony, mivel a rögzített particionálás belső, míg a külső fragmentáció dinamikus eredményeket eredményez. A széttöredezettség problémájának lehetséges megoldása az, ha a folyamatot nem szabad folyamatos memóriablokkba írni. A program tetszőlegesen szétszórható a memóriában. Ebben az esetben a munkamemóriát kisebb méretű, rögzített méretű blokkokra osztják, amelyeket kereteknek hívnak. A program logikai címterét ugyanolyan méretű blokkokra osztják, azaz oldalakat. Amikor egy programot beírnak a memóriába, az oldalak szabad memória keretbe kerülnek. A programok lemezről a munkamemóriába történő átvitelének megkönnyítése érdekében a lemezt a memóriakeretekkel azonos méretű keretekre osztják. Így a lemezen lévő egy kép a munkamemória egy keretébe kerül. A lapozórendszer a következőképpen működik: amikor a programot végrehajtásra elfogadják, kiszámítják annak méretét, amelyet a szükséges oldalak számával fejeznek ki. Ha elegendő számú képkocka van szabadon, akkor a folyamatot a memória oldalon rögzítik oldalanként. Ugyanakkor a kerettáblázatba beírja az egyes oldalak írásának keretét.
A felhasználói program és a hozzá kapcsolódó adatok több szegmensre oszthatók. Az összes program szegmenseinek nem kell, hogy azonos méretűek legyenek, bár van egy maximális szegmenshossz. A lapozáshoz hasonlóan a szegmentálást használó logikai cím két részből áll, ebben az esetben a szegmensek számából és a szegmensen belüli diszlokációkból. A különböző méretű szegmensek használata miatt a szegmentálás hasonló a dinamikus particionáláshoz. Átfedési séma vagy a virtuális memória használata hiányában a végrehajtáshoz minden programszegmenst be kell tölteni a memóriába. A dinamikus particionáláshoz képest az a különbség, hogy a szegmentálás egynél több partíciót igénybe vehet, és a partíciónak nem kell szomszédosnak lennie. A szegmentálás megoldja a belső fragmentáció problémáját, de a dinamikus particionálás mellett a külső fragmentáció problémája továbbra is fennáll. Mivel azonban a folyamat több kisebb részre oszlik, a külső töredezettség általában kisebb. A programozó számára láthatatlan lapozással ellentétben a szegmentálás általában látható és alkalmas a programok és adatok szervezésére. A moduláris programozás céljából a programot vagy az adatokat tovább lehet osztani több kisebb szegmensre. Ennek a technikanak az a hátránya, hogy a programozónak ismernie kell a maximális szegmens méret korlátozásait. A különféle méretű szegmensek használatának következő kényelme az, hogy nincs logikus és fizikai cím közötti kapcsolat. A lapozáshoz hasonlóan az egyszerű szegmentálási technika szegmenstáblát használ minden folyamathoz és a fő memóriában rendelkezésre álló blokkok listáját.
A lapozás virtuális és fizikai címteret, valamint másodlagos memóriaterületet biztosít azonos hosszúságú blokkokon (oldalak). Ez lehetővé teszi a folyamatos virtuális címtér hozzárendelését a diszperziós folyamathoz (nem feltétlenül folyamatosan elosztva) a valós címtérben és a másodlagos memóriában. Még az oldal kifejezésként inkább a memóriára utal, mint a program szintjén látható logikai objektumokra. A szegmentálás virtuális címet biztosít a blokkokon (szegmenseken), amelyek közvetlenül megfelelnek az objektumoknak a program szintjén. Emiatt a szegmensnek nincs rögzített hossza, így a szegmens mérete megváltoztatható a program végrehajtása során. Ezért a védelem és a megosztás objektumszinten lehetséges, és vannak olyan folyamatok, ahol a szegmentálás történik.
Az alkalmazásfejlesztőnek nincs tudomása a lapozásról. Úgy írja a programokat, mintha a memória lineáris lenne, és az operációs rendszert és a processzort aggódik a partíciója és a virtuális címekké konvertálás. A szegmentációs rendszerek programozója azonban felsorolja a cím, a szegmens és az oldal két részét a programjában. Az összes oldal azonos méretű, míg a szegmensek eltérőek. A szegmentálásnak több lineáris címtere van, és csak egy lapozzon. A szegmensek lehetővé teszik az alkalmazás összetevőinek logikai particionálását és védelmét, az oldalak pedig nem.
A programozó számára átlátható lapozás kiküszöböli a külső fragmentációt, és ezzel biztosítja a fő memória hatékony felhasználását. A fő memóriába be és ki mozgó darabok rögzítettek és azonos méretűek, így kifinomult memóriakezelési algoritmusokat lehet kifejleszteni, amelyek kihasználják a program viselkedését. A szegmentálás látható a fejlesztő számára, és képes kezelni az adatszerkezet növekedését, a moduláris működést, valamint támogatni tudja az adatcserét és a védelmet.
személyhívó | szegmentálás |
rögzített oldalméret | a szegmensek mérete nem rögzített |
láthatatlan a programozó számára | látható a programozó számára |
egy lineáris címtér | több lineáris címtér |
nem engedélyezi az alkalmazás összetevőinek logikai particionálását és védelmét | lehetővé teszi |