Sivusto ja segmentointi

Anonim

Muistinhallinta on yksi käyttöjärjestelmän perustoiminnoista. Nykyaikaiset käyttöjärjestelmät mahdollistavat jokaisen prosessin saavan enemmän virtuaalimuistia kuin todellisen (fyysisen) muistin koko koolle tietyssä tietojärjestelmässä. Muistinhallinnan päätavoitteena on, että yhdistämällä suuri mutta hidas muisti pienellä mutta nopealla muistilla suuremman nopean muistin vaikutuksen saavuttamiseksi.

Mikä on Paging?

Erotteleminen kiinteän ja muuttuvan osioinnin välillä on tehoton muistin käytön kannalta, koska kiinteä osiointi johtaa sisäiseen ja ulkoiseen fragmentoitumiseen. Eräs mahdollinen ratkaisu sirpaloitumisongelmaan on sallia prosessi ei ole kirjoitettu jatkuvalle muistilohkolle. Ohjelma voidaan hajoittaa mielivaltaisesti muistiin. Tässä tapauksessa työmuisti on jaettu pienempiin kiinteän koon lohkoihin, joita kutsutaan kehyksiksi. Ohjelman looginen osoiteavaruus jaetaan myös samankokoisiin lohkoihin, joita kutsutaan sivuiksi. Kun ohjelma syötetään muistiin, sivut kirjoitetaan vapaisiin muistikehyksiin. Levyjen siirtämisen helpottamiseksi levyltä työmuistiin levylle jaetaan myös kehyksistä, jotka ovat saman kokoisia kuin muistikehykset. Tällöin yksi kehys levystä kirjoitetaan työmuistin yhteen kehykseen. Hakujärjestelmä toimii seuraavalla tavalla: kun ohjelma hyväksytään toteutettavaksi, sen koko lasketaan, mikä ilmaistaan ​​vaaditulla sivumäärältään. Jos riittävä määrä kehyksiä on vapaa, prosessi tallennetaan muistisivuun sivua kohden. Samanaikaisesti kehystaulukkoon syötetään kehysten määrä, joissa kukin sivu kirjoitetaan.

Mikä on segmentoituminen?

Käyttäjäohjelma ja siihen liittyvät tiedot voidaan jakaa useisiin segmentteihin. Kaikkien ohjelmien segmenttien ei tarvitse olla samankokoisia, vaikka segmentin enimmäispituus onkin. Samoin kuin hakulausekkeella, segmentointia käyttävä looginen osoite koostuu kahdesta osasta, tässä tapauksessa segmenteistä ja niiden sijainnista. Erilaisten segmenttien käytön vuoksi segmentointi on samanlainen kuin dynaaminen ositus. Jos ei ole päällekkäisjärjes- telmää tai virtuaalimuistin käyttöä, vaaditaan, että kaikki ohjelmasegmentit ladataan muistiin suoritusta varten. Erotus dynaamiseen osiointiin verrattuna on se, että segmentointi voi kestää useamman kuin yhden osion ja että osion ei tarvitse olla vierekkäin. Segmentointi ratkaisee sisäisen pirstaloitumisen ongelman, mutta myös dynaaminen ositus, ulkoisen fragmentaation ongelma on edelleen. Koska prosessi on kuitenkin jaettu useisiin pienempiin osiin, ulkoinen fragmentaatio on tyypillisesti pienempi. Toisin kuin haku, joka on ohjelmoitavana näkymättömänä, segmentointi on yleensä näkyvää ja sopiva ohjelmien ja tietojen järjestämiseen. Modulaarisen ohjelmoinnin kannalta ohjelmaa tai dataa voidaan edelleen jakaa useisiin pienempiin segmentteihin. Tämän tekniikan haittapuoli on se, että ohjelmoija tarvitsee tietää segmentin enimmäisrajan rajoitukset. Seuraava käyttökelpoisuus käyttää erikokoisia segmenttejä on, että loogisten ja fyysisten osoitteiden välillä ei ole mahdollisia yhteyksiä. Samanlainen kuin haku, yksinkertainen segmentointitekniikka käyttää segmenteiden taulukkoa kullekin prosessille ja luettelon käytettävissä olevista lohkoista päämuistissa.

Erotus hakujen ja segmentoinnin välillä

1. Haku- ja segmentointiprosessin käsite

Paging toimittaa virtuaalisen ja fyysisen osoitetilan ja toissijaisen muistin tilalle samanpituisten lohkojen (sivut). Tämä sallii jatkuvan virtuaalisen osoitetilan jakamisen dispersion prosessiin (ei välttämättä jakautumatta jatkuvasti) todellisessa osoiteavaruudessa ja toissijaisessa muistissa. Jopa sivu, termi, viittaa muistiin eikä loogisiin esineisiin, jotka näkyvät ohjelmatasolla. Segmentointi tuottaa virtuaalisen osoiteavaruuden lohkoille (segmentteille), jotka vastaavat suoraan objektitasoja ohjelmatasolla. Tästä johtuen segmentillä ei ole kiinteää pituutta, joten segmenttikokoa voidaan muuttaa ohjelman suorituksen aikana. Suojaus ja jakautuminen ovat siten mahdollisia objektitasolla, ja näkyvissä on prosesseja, joissa segmentointi suoritetaan.

2.Haku- ja segmentointiominaisuudet

Sovelluskehittäjä ei tiedä hakua. Hän kirjoittaa ohjelmia ikään kuin muisti on lineaarinen, ja käyttöjärjestelmä ja prosessori ovat huolissaan sen osittamisesta ja muuntamisesta virtuaalisiin osoitteisiin. Segmentaatiojärjestelmien ohjelmoijalla on kuitenkin kaksi osaa ohjelmiensa osoitteista, segmentistä ja sivuista. Kaikki sivut ovat samankokoisia, kun taas segmentit ovat erilaisia. Segmentoinnilla on useita lineaarisia osoiteavaruuksia ja vain yksi haku. Segmentit mahdollistavat loogisen jakamisen ja suojauksen sovelluskomponentit, ja sivut eivät.

3. Hakemisen ja segmentoinnin edut

Ohjelmointilaitteelle läpinäkyvä hakuominaisuus eliminoi ulkoisen pirstoutumisen ja takaa näin tärkeän muistin tehokkaan käytön. Päämuistin sisään ja ulos siirtyvät kappaleet ovat kiinteitä ja samankokoisia, joten on mahdollista kehittää kehittyneitä muistin hallintaalgoritmeja, jotka hyödyntävät ohjelman käyttäytymistä. Segmentointi näkyy kehittäjälle ja sillä on kyky hallita tietorakenteen kasvua, modulaarisuutta ja tukea vaihtoon ja suojaukseen.

Selaus vs. segmentointi: vertailukaavio

Hakulaite

jakautuminen

kiinteät sivut koko segmenttejä ei ole määritetty kooltaan
näkymätön ohjelmoijalle näkyvissä ohjelmoijalle
yksi lineaarinen osoiteavaruus useita lineaarisia osoiteavaruuksia
ei salli logiikkaa ja sovelluskomponenttien suojausta sallii

Yhteenveto hakuun ja segmentoitumiseen

  • Selaus perustuu kiinteän pituisen lohkon koko osoitustilan jakamiseen, joita käytetään muistikvantisina. Lisäksi on välttämätöntä aikaansaada väline käytettävissä olevan muistin merkitsemiseksi, joka voidaan suorittaa kunkin sivun otsikon "otsikon" avulla, joka ilmaisee sivun tilan (maailmanlaajuinen linkitetty luettelo, jossa kukin solmu osoittaa seuraavalle vapaalle sivulle) tai sijoittaa vapaan sivun osoitteen globaalissa ryhmässä, mikä on yleensä pahin ratkaisu.
  • Segmentointi tarkoittaa osoiteavaruuden jakamista segmenteille, joilla on selkeästi merkityt käyttöoikeudet MMU-prosessoriin. Segmentin sisällä prosessit varaavat täsmälleen niin paljon muistia kuin ne tarvitsevat, mutta muistinhallinnan ongelma on, miten tarjota sellainen jakelu, jossa se voi säilyttää riittävän suuren jatkuvan lohkokomennon, joka voi tarvita jonkin aikaa.