Ero sivun ja segmentoinnin välillä

Muistin hallinta on yksi käyttöjärjestelmän perustoiminnoista. Nykyaikaiset käyttöjärjestelmät antavat jokaisen prosessin saada enemmän virtuaalimuistia kuin todellisen (fyysisen) muistin kokonaismäärä tietyssä tietokonejärjestelmässä. Muistinhallinnan päätavoite on, että yhdistämällä suuri, mutta hidas muisti pieneen, mutta nopeaan muistiin, saavutetaan suuremman nopean muistin vaikutus.

Mikä on haku?

Kiinteän ja muuttuvan osion erottaminen on tehoton muistin hyödyntämisen kannalta, koska kiinteä osio johtaa sisäiseen, kun taas ulkoinen pirstoutumiseen. Mahdollinen ratkaisu pirstoutumisen ongelmaan on antaa prosessin olla kirjoittamatta jatkuvalle muistilohkolle. Ohjelma voidaan hajottaa mielivaltaisesti muistiin. Tässä tapauksessa työmuisti on jaettu pienempiin kiinteän kokoisiin lohkoihin, joita kutsutaan kehyksiksi. Ohjelman looginen osoitetila on myös jaettu samankokoisiin lohkoihin, joita kutsutaan sivuiksi. Kun ohjelma syötetään muistiin, sivut kirjoitetaan vapaisiin muistikehyksiin. Ohjelmien siirron helpottamiseksi levyltä työmuistiin levy on myös jaettu kehyksiin, jotka ovat samankokoisia kuin muistikehykset. Siten yksi kehys levyltä kirjoitetaan yhdeksi työmuistin kehykseksi. Hakulaite toimii seuraavalla tavalla: kun ohjelma hyväksytään suoritettavaksi, sen koko lasketaan, joka ilmaistaan ​​vaaditulla sivumäärällä. Jos riittävä määrä kehyksiä on vapaa, prosessi tallennetaan muistilla sivua kohden. Samanaikaisesti ruutujen taulukkoon kirjoitetaan niiden kehysten lukumäärä, joissa jokainen sivu on kirjoitettu.

Mikä on segmentointi??

Käyttäjäohjelma ja siihen liittyvät tiedot voidaan jakaa useisiin segmentteihin. Kaikkien ohjelmien segmenttien ei tarvitse olla samankokoisia, vaikka segmenttien enimmäispituus onkin. Kuten sivunhaussa, segmentointia käyttävä looginen osoite koostuu kahdesta osasta, tässä tapauksessa segmenttien lukumäärästä ja sijoittelusta kyseisen segmentin sisällä. Erikokoisten segmenttien käytön vuoksi segmentointi on samanlainen kuin dynaaminen osiointi. Jos päällekkäismalleja tai virtuaalimuistia ei käytetä, vaaditaan, että kaikki ohjelmasegmentit ladataan muistiin suorittamista varten. Ero dynaamiseen osiointiin verrattuna on se, että segmentointi voi viedä useamman kuin yhden osion ja että osion ei tarvitse olla vierekkäinen. Segmentointi ratkaisee sisäisen pirstoutumisen ongelman, mutta dynaamisen osittumisen lisäksi ulkoisen pirstoutumisen ongelma on edelleen olemassa. Koska prosessi on jaettu lukuisiin pienempiin osiin, ulkoinen pirstoutuminen on kuitenkin tyypillisesti pienempi. Toisin kuin ohjelmoijalle näkymätön haku, segmentointi on yleensä näkyvää ja sopivaa ohjelmien ja datan järjestämiseen. Modulaarista ohjelmointia varten ohjelma tai data voidaan jakaa edelleen useisiin pienempiin segmentteihin. Tämän tekniikan haittapuoli on, että ohjelmoijan on tunnettava segmentin enimmäiskoon rajoitukset. Seuraava mukavuus erikokoisten segmenttien käyttämisessä on, että loogisen ja fyysisen osoitteen välillä ei ole tulevaisuuden yhteyttä. Kuten haku, yksinkertainen segmentointitekniikka käyttää segmenttitaulukoita jokaiselle prosessille ja luetteloa päämuistissa käytettävissä olevista lohkoista.

Ero sivun ja segmentoinnin välillä

1. Haun käsite ja segmentointi

Haku tarjoaa virtuaalisen ja fyysisen osoitetilan ja toissijaisen muistitilan yhtä pitkillä lohkoilla (sivuilla). Tämä sallii jatkuvan virtuaalisen osoitealueen allokoinnin hajotusprosessille (ei välttämättä jatkuvasti hajautetulle) todellisessa osoitetilassa ja toissijaisessa muistissa. Jopa sivu viittaa terminä pikemminkin muistiin kuin loogisiin objekteihin, jotka ovat näkyvissä ohjelmatasolla. Segmentointi toimittaa virtuaalisen osoitealueen lohkoille (segmenteille), jotka vastaavat suoraan objektit ohjelmatasolla. Tämän vuoksi segmentillä ei ole kiinteää pituutta, joten jopa segmentin kokoa voidaan muuttaa ohjelman suorittamisen aikana. Suojaus ja jakaminen ovat siksi mahdollista objektitasolla, ja segmentoinnissa tapahtuu näkyviä prosesseja.

2. Haun ja segmentoinnin ominaispiirteet

Sovelluskehittäjä ei ole tietoinen sivusta. Hän kirjoittaa ohjelmia ikään kuin muisti on lineaarinen, ja käyttöjärjestelmä ja prosessori ovat huolissaan sen osioinnista ja muuntamisesta virtuaaliosoitteiksi. Segmentointijärjestelmien ohjelmoija kuitenkin luettelee kaksi osaa osoitteen, segmentin ja sivun ohjelmissaan. Kaikki sivut ovat samankokoisia, kun taas segmentit ovat erilaiset. Segmentoinnissa on useita lineaarisia osoiteväliä ja sivulla vain yksi. Segmentit sallivat loogisen osituksen ja sovelluskomponenttien suojauksen, ja sivut eivät.

3. Haun ja segmentoinnin edut

Sivunvaihto, joka on avoin ohjelmoijalle, eliminoi ulkoisen pirstoutumisen ja varmistaa siten päämuistin tehokkaan käytön. Päämuistista sisään ja ulos liikkuvat palat ovat kiinteitä ja samankokoisia, joten on mahdollista kehittää hienostuneita muistinhallintaalgoritmeja, jotka hyödyntävät ohjelman käyttäytymistä. Segmentointi on kehittäjälle näkyvää ja sillä on kyky hallita tietorakenteen kasvua, modulaarisuutta sekä tukea vaihtoa ja suojausta varten.

Haku vs. segmentointi: vertailukaavio

Hakulaite

jakautuminen

kiinteä sivukoko segmenttien koko ei ole kiinteä
näkymätön ohjelmoijalle näkyvissä ohjelmoijalle
yksi lineaarinen osoitetila useita lineaarisia osoiteväliä
ei salli loogista osiointia ja sovelluskomponenttien suojausta sallii

Yhteenveto sivusta ja segmentoinnista

  • Haku perustuu koko osoitealueen jakautumiseen kiinteäpituisissa lohkoissa, joita käytetään muistikvantteina. Lisäksi on välttämätöntä tarjota välineet käytettävissä olevan muistin merkitsemiseksi, joka voidaan suorittaa kunkin sivun "otsikon" läsnäololla, joka osoittaa sivun tilan (globaali linkitetty luettelo, jossa jokainen solmu osoittaa seuraavalle vapaalle sivulle), tai sijoittamalla ilmaisen sivun osoite globaaliin taulukkoon, mikä on yleensä pahin ratkaisu.
  • Segmentointi tarkoittaa osoitealueen jakamista segmenteiksi, joilla on selvästi merkitty käyttöoikeudet MMU-prosessoriin. Segmentin sisällä prosessit varaavat tarkalleen niin paljon muistia kuin tarvitsevat, mutta muistinhallinnan ongelmana on, kuinka tarjota sellainen varaus, jossa se voi säilyttää riittävän suuren jatkuvan lohkomuistin, joka saattaa tarvita jonkin aikaa.