Razlika između straničenja i segmentacije

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.

Što je paging?

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.

Što je segmentacija?

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.

Razlika između straničenja i segmentacije

1. Pojam straničenja i segmentacije

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.

2. Karakteristike straničenja i segmentacije

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.

3. Prednosti straničenja i segmentacije

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.

Straniranje prema segmentaciji: usporedni grafikon

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

Sažetak stranice i segmentacije

  • Straniranje se temelji na raspodjeli cjelokupnog adresnog prostora na blokovima fiksne duljine koji se rade kao kvanti s memorijom. Nadalje, potrebno je osigurati način za obilježavanje raspoložive memorije koja se može izvršiti prisustvom "zaglavlja" svake stranice koji označava status stranice (globalni povezani popis gdje svaki čvor upućuje na sljedeću slobodnu stranicu) ili postavljanje adrese besplatne stranice u globalni niz, što je obično najgore rješenje.
  • Segmentacija znači dijeljenje adresnog prostora na segmente koji imaju jasno označena prava pristupa MMU procesoru. Unutar segmenta procesi raspoređuju točno onoliko memorije koliko im treba, ali problem upravljanja memorijom je kako osigurati takvu raspodjelu tamo gdje se može sačuvati dovoljno velika kontinuirana blok memorija koja će možda trebati neko vrijeme.