Upravljanje memorijom jedna je od osnovnih funkcija operativnog sustava. Suvremeni operativni sustavi omogućuju svakom procesu da dobije više virtualne memorije od ukupne veličine stvarne (fizičke) memorije na određenom računalnom sustavu. Glavni cilj upravljanja memorijom je da se kombiniranjem velike, ali spora memorija s malom, ali velikom brzinom memorije postigne učinak veće memorije velike brzine.
Razdvajanje između fiksnih i varijabilnih particija nije učinkovito u smislu iskorištavanja memorije, jer fiksna particija rezultira unutarnjom, dok je dinamična u vanjskoj fragmentaciji. Moguće rješenje problema fragmentacije je omogućiti da se proces ne upiše u kontinuirani memorijski blok. Program se može proizvoljno raštrkati u memoriji. Radna memorija je u tom slučaju podijeljena na manje blokove fiksne veličine koji se zovu okviri. Logički adresni prostor programa također je podijeljen na blokove iste veličine, nazvane stranice. Kad se program unese u memoriju, stranice se upisuju u slobodne memorijske okvire. Radi lakšeg prijenosa programa s diska u radnu memoriju, disk je također podijeljen na okvire iste veličine kao i na memorijske okvire. Tako se jedan okvir s diska zapisuje u jedan okvir radne memorije. Sustav straničnog pozivanja djeluje na sljedeći način: kad je program prihvaćen za izvođenje, izračunava se njegova veličina koja se izražava potrebnim brojem stranica. Ako je dovoljan broj okvira besplatan, postupak se bilježi u memorijsku stranicu po stranici. Istovremeno se u tablicu okvira upisuje broj okvira u kojima je napisana svaka stranica.
Korisnički program i pridruženi podaci mogu se podijeliti u više segmenata. Segmenti svih programa ne moraju biti iste veličine, iako postoji maksimalna duljina segmenta. Kao i kod straničnog pozivanja, logička adresa koja koristi segmentaciju sastoji se od dva dijela, u ovom slučaju broja segmenata i dislokacija unutar tog segmenta. Zbog korištenja segmenata različitih veličina, segmentacija je slična dinamičkoj podjeli. U nedostatku sheme preklapanja ili upotrebe virtualne memorije, potrebni su da se svi programski segmenti učitaju u memoriju za izvršavanje. Razlika u usporedbi s dinamičkom particijom je u tome što segmentacija može potrajati više od jedne particije i ta particija ne mora biti susjedna. Segmentacija rješava problem unutarnje fragmentacije, ali kao i dinamička podjela ostaje problem vanjske fragmentacije. Međutim, budući da je postupak podijeljen na više manjih dijelova, vanjska fragmentacija je obično manja. Za razliku od pozivanja koje je programeru nevidljivo, segmentacija je obično vidljiva i pogodna za organiziranje programa i podataka. U svrhu modularnog programiranja, program ili podatke mogu se dalje podijeliti u nekoliko manjih segmenata. Nedostatak ove tehnike je u tome što programer mora znati ograničenja maksimalne veličine segmenta. Sljedeća pogodnost korištenja segmenata različitih veličina je ta što ne postoji perspektivna veza između logičke i fizičke adrese. Slično kao stranični poziv, jednostavna tehnika segmentacije koristi tablicu segmenata za svaki postupak i popis dostupnih blokova u glavnoj memoriji.
Straniranje nudi virtualni i fizički adresni prostor te sekundarni memorijski prostor na blokovima (stranicama) jednake duljine. To omogućava dodjeljivanje kontinuiranog virtualnog adresnog prostora procesu disperzije (nije nužno kontinuirano distribuiranog) u stvarnom adresnom prostoru i sekundarnoj memoriji. Čak se i stranica, kao izraz, odnosi na memoriju, a ne na logičke objekte koji su vidljivi na programskoj razini. Segmentacija nudi virtualni adresni prostor na blokovima (segmentima) koji izravno odgovaraju objektima na programskoj razini. Zbog toga segment nema fiksnu duljinu, pa se čak i veličina segmenta može mijenjati tijekom izvođenja programa. Zaštita i podjela su, dakle, mogući na razini objekta, a postoje vidljivi procesi u kojima se vrši segmentacija.
Programer aplikacije ne zna za pozivanje. On piše programe kao da je memorija linearna, a operativni sustav i procesor su zabrinuti zbog njegove particije i pretvaranja u virtualne adrese. Programer na segmentacijskim sustavima, međutim, u svojim programima navodi dva dijela adrese, segmenta i stranice. Sve su stranice iste veličine dok su segmenti različiti. Segmentacija ima više linearnih razmaka adresa, a stranica je jedna. Segmenti omogućuju logičku podjelu i zaštitu komponenti aplikacije, a stranice ne.
Strani poziv, koji je proziran programeru, uklanja vanjsku fragmentaciju i na taj način osigurava učinkovitu uporabu glavne memorije. Dijelovi koji se kreću u glavnu memoriju i iz njih su fiksni i iste veličine, tako da je moguće razviti sofisticirane algoritme upravljanja memorijom koji iskorištavaju ponašanje programa. Segmentacija je vidljiva programeru i ima mogućnost upravljanja rastom strukture podataka, modularnošću i podrškom za razmjenu i zaštitu.
prijelom | Segmentacija |
fiksna veličina stranica | segmenti nisu fiksni u veličini |
nevidljiv za programera | vidljivo za programera |
jedan linearni prostor adrese | više linearnih razmaka adresa |
ne dopušta logičku particiju i zaštitu komponenti aplikacije | omogućuje |