Razlika med pozivanjem in segmentacijo

Upravljanje pomnilnika je ena osnovnih funkcij operacijskega sistema. Sodobni operacijski sistemi omogočajo, da vsak postopek pridobi več virtualnega pomnilnika od skupne velikosti dejanskega (fizičnega) pomnilnika v določenem računalniškem sistemu. Glavni cilj upravljanja spomina je, da z združevanjem velikega, a počasnega pomnilnika z majhnim, a hitrostnim pomnilnikom dosežemo učinek večjega pomnilnika visoke hitrosti.

Kaj je stransko iskanje?

Ločevanje med fiksno in spremenljivo particijo je neuporabno v smislu porabe pomnilnika, saj fiksna particija povzroči notranjo, dinamično pa zunanjo razdrobljenost. Možna rešitev problema razdrobljenosti je omogočiti, da se postopek ne zapiše v neprekinjeni blok spomina. Program lahko poljubno raztresemo v pomnilniku. V tem primeru je delovni pomnilnik razdeljen na manjše bloke fiksne velikosti, imenovane okvirji. Logični naslovni program programa je razdeljen tudi na bloke enake velikosti, imenovane strani. Ko se program vnese v pomnilnik, se strani zapišejo v proste pomnilniške okvire. Zaradi lažjega prenosa programov z diska v delovni pomnilnik je disk razdeljen tudi na okvirje enake velikosti kot pomnilniški okviri. Tako se en okvir z diska zapiše v en okvir delovnega pomnilnika. Pozivni sistem deluje na naslednji način: ko je program sprejet za izvedbo, se izračuna njegova velikost, ki je izražena z zahtevanim številom strani. Če je zadostno število sličic brezplačno, se postopek zapiše v pomnilniško stran na stran. Hkrati se v tabelo okvirjev vnese število sličic, v katere je zapisana vsaka stran.

Kaj je segmentacija?

Uporabniški program in z njim povezane podatke lahko razdelimo na več segmentov. Segmenti vseh programov ne smejo biti enake velikosti, čeprav je največja dolžina segmenta. Tako kot pri straniranju je tudi logični naslov, ki uporablja segmentacijo, sestavljen iz dveh delov, v tem primeru števila segmentov in dislokacij znotraj tega segmenta. Zaradi uporabe segmentov različnih velikosti je segmentacija podobna dinamični particiji. Če sheme prekrivanja ali uporabe navideznega pomnilnika ni, se vsi segmenti programa naložijo v pomnilnik za izvedbo. Razlika v primerjavi z dinamično particijo je, da segmentacija lahko traja več kot ena particija in da ni treba, da je particija sosednja. Segmentacija rešuje problem notranje fragmentacije, vendar kot dinamična particija, problem zunanje fragmentacije ostaja. Ker pa je postopek razdeljen na več manjših delov, je zunanja razdrobljenost običajno manjša. Za razliko od pozivanja, ki je programerju nevidno, je segmentacija običajno vidna in primerna za organiziranje programov in podatkov. Za namen modularnega programiranja lahko program ali podatke nadalje razdelimo na več manjših segmentov. Slaba stran te tehnike je, da mora programer poznati omejitve največje velikosti segmenta. Naslednja ugodnost uporabe segmentov različnih velikosti je, da ni nobene potencialne povezave med logičnim in fizičnim naslovom. Podobno kot stransko iskanje tudi preprosta tehnika segmentacije uporablja tabelo segmentov za vsak postopek in seznam razpoložljivih blokov v glavnem pomnilniku.

Razlika med pozivanjem in segmentacijo

1. Pojem stranske zasnove in segmentacije

Straniranje ponuja virtualni in fizični naslov, ter sekundarni pomnilniški prostor na blokih (straneh) enake dolžine. To omogoča, da se neprekinjenemu navideznemu naslovnemu prostoru dodeli proces disperzije (ni nujno, da se nenehno distribuira) v realnem naslovnem prostoru in sekundarnem pomnilniku. Celo stran se kot izraz nanaša na pomnilnik in ne na logične predmete, ki so vidni na programski ravni. Segmentacija ponuja navidezni naslov prostora na blokih (segmentih), ki neposredno ustrezajo objektom na programski ravni. Zaradi tega segment nima določene dolžine, zato se lahko med izvajanjem programa spremeni tudi velikost segmenta. Zaščita in delitev sta torej na ravni objekta možni in obstajajo vidni procesi, kjer se izvaja segmentacija.

2. Značilnosti stranske strani in segmentacije

Razvijalci aplikacij ne poznajo stranskih strani. Programe piše, kot da je pomnilnik linearen, operacijski sistem in procesor pa sta zaskrbljena zaradi njegove particije in pretvorbe v virtualne naslove. Programer v sistemih segmentacije pa v svojih programih navaja dva dela naslova, segmenta in strani. Vse strani so enake velikosti, segmenti pa so različni. Segmentacija ima več linearnih prostorskih naslovov in straniranje samo enega. Segmenti omogočajo logično particijo in zaščito komponent aplikacije, strani pa ne.

3. Prednosti stranske strani in segmentacije

Straniranje, ki je programerju pregledno, odpravlja zunanjo razdrobljenost in s tem zagotavlja učinkovito uporabo glavnega pomnilnika. Kosi, ki se premikajo v glavni pomnilnik in iz njega, so fiksni in enake velikosti, zato je mogoče razviti sofisticirane algoritme za upravljanje pomnilnika, ki izkoriščajo vedenje programa. Segmentacija je razvidna razvijalcu in ima možnost upravljanja rasti strukture podatkov, modularnosti in podpore za izmenjavo in zaščito.

Stran: Segmentacija: Primerjalna shema

Straniranje

Segmentacija

določena velikost strani segmenti niso določeni po velikosti
neviden za programerja vidno za programerja
en linearni naslovni prostor več linearnih naslovov
ne omogoča logičnega razdelitve in zaščite komponent aplikacije omogoča

Povzetek stranske strani in segmentacije

  • Straniranje temelji na porazdelitvi celotnega naslovnega prostora na bloke s fiksno dolžino, ki delujejo kot kvanti pomnilnika. Nadalje je treba zagotoviti sredstva za označevanje razpoložljivega pomnilnika, ki ga je mogoče izvesti s prisotnostjo "glave" vsake strani, ki kaže stanje strani (globalni povezan seznam, kjer vsako vozlišče kaže na naslednjo brezplačno stran) ali umestitev brezplačnega naslova strani v globalni niz, kar je ponavadi najslabša rešitev.
  • Segmentacija pomeni delitev naslovnega prostora na segmente, ki imajo jasno označene pravice dostopa do MMU procesorja. Znotraj segmenta procesi razporedijo točno toliko pomnilnika, kot ga potrebujejo, vendar je problem upravljanja pomnilnika v tem, kako zagotoviti takšno dodelitev, kjer lahko ohrani dovolj velik neprekinjeni pomnilnik bloka, ki morda potrebuje nekaj časa.