Erinevus lehitsemise ja segmentimise vahel

Mäluhaldus on operatsioonisüsteemi üks põhifunktsioone. Kaasaegsed operatsioonisüsteemid võimaldavad igal protsessil saada rohkem virtuaalset mälu kui antud arvutisüsteemi tegeliku (füüsilise) mälu kogu suurus. Mäluhalduse peamine eesmärk on see, et kombineerides suurt, kuid aeglast mälu väikese, kuid kiire mäluga, saavutataks suurema kiirmälu efekt.

Erinevus lehitsemise ja segmentimise vahel



Mis on lehitsemine?

Fikseeritud ja muutuva partitsiooni eraldamine on mälu kasutamise seisukohalt ebaefektiivne, kuna fikseeritud partitsiooni tulemuseks on sisemine, dünaamiline väline killustatus. Killustatuse probleemi võimalik lahendus on lubada protsessi mitte kirjutada pidevasse mäluplokki. Programmi saab meelevaldselt mällu hajutada. Sellisel juhul jagatakse töömälu väiksemateks fikseeritud suurusega plokkideks, mida nimetatakse kaadriteks. Samuti on programmi loogiline aadressiruum jagatud sama suurusteks plokkideks, mida nimetatakse lehtedeks. Kui programm sisestatakse mällu, kirjutatakse lehed vabasse mälukaadrisse. Programmide kettalt töömällu ülekandmise hõlbustamiseks jagatakse ketas ka mälukaadritega sama suureks kaadriks. Seega kirjutatakse kettalt üks kaader töömälu ühte kaadrisse. Otsimissüsteem töötab järgmiselt: kui programm on käivitamiseks vastu võetud, arvutatakse selle suurus, mis väljendatakse vajaliku arvu lehekülgedega. Kui vaba arv kaadreid on vaba, salvestatakse protsess lehe kohta mälulehele. Samal ajal sisestatakse kaadritabelisse kaadrite arv, millesse iga leht on kirjutatud.

Mis on segmentimine?

Kasutajaprogrammi ja sellega seotud andmed saab jagada mitmeks segmendiks. Kõigi programmide segmendid ei pea olema ühesuurused, kuigi segmentide maksimaalne pikkus on olemas. Sarnaselt lehitsemisega koosneb segmenteerimist kasutav loogiline aadress kahest osast, antud juhul segmentide arvust ja nihestustest selles segmendis. Erineva suurusega segmentide kasutamise tõttu on segmentimine sarnane dünaamilise jaotusega. Ülekatte skeemi puudumisel või virtuaalse mälu kasutamisel on täitmiseks vaja, et kõik programmi segmendid laaditaks mällu. Erinevus võrreldes dünaamilise jaotusega on see, et segmentimine võib võtta rohkem kui ühe sektsiooni ja see sektsioon ei pea olema külgnev. Segmentimine lahendab sisemise killustatuse probleemi, kuid lisaks dünaamilisele jaotamisele jääb ka välise killustatuse probleem püsima. Kuna protsess on jagatud mitmeks väiksemaks osaks, on väline killustumine tavaliselt väiksem. Erinevalt programmeerijale nähtamatust lehitsemisest on segmentimine tavaliselt nähtav ja sobib programmide ja andmete korraldamiseks. Moodulprogrammeerimise eesmärgil saab programmi või andmeid jagada veel mitmeks väiksemaks segmendiks. Selle tehnika negatiivne külg on see, et programmeerija peab teadma segmendi maksimaalse suuruse piiranguid. Erineva suurusega segmentide kasutamise järgmine mugavus on see, et pole perspektiivi seos loogiliste ja füüsiliste aadresside vahel . Sarnaselt lehitsemisele kasutab lihtne segmenteerimistehnika iga protsessi jaoks segmentide tabelit ja põhimälus saadaolevate plokkide loendit.

Erinevus lehitsemise ja segmentimise vahel

1. Otsingu ja segmentimise mõiste

Lehekülg pakub võrdse pikkusega plokkidele (lehtedele) virtuaalse ja füüsilise aadressiruumi ning teisese mäluruumi. See võimaldab pideva virtuaalse aadressiruumi eraldada dispersiooniprotsessile (mitte tingimata pidevalt jaotatud) reaalses aadressiruumis ja sekundaarmälus. Isegi leht tähistab terminina pigem mälu kui loogilisi objekte, mis on programmi tasemel nähtavad. Segmenteerimine annab virtuaalse aadressiruumi plokkidele (segmentidele), mis vastavad otseselt programmi tasemel objektidele. Seetõttu pole segmendil fikseeritud pikkust, nii et isegi segmendi suurust saab programmi käivitamise ajal muuta. Kaitse ja jagamine on seetõttu objekti tasemel võimalik ning segmenteerimisel on nähtavaid protsesse.



2. Otsingu ja segmentimise omadused

The rakenduse arendaja pole lehitsemisest teadlik. Ta kirjutab programme nii, nagu oleks mälu lineaarne ning operatsioonisüsteem ja protsessor tunnevad muret selle partitsioneerimise ja virtuaalsetele aadressidele teisendamise pärast. Segmenteerimissüsteemide programmeerija loetleb oma programmides aga kaks aadressi, segmenti ja lehte. Kõik lehed on sama suurusega, samal ajal kui segmendid on erinevad. Segmentimisel on mitu lineaarset aadressiruumi ja lehitsemine ainult üks. Segmendid võimaldavad rakenduskomponente loogiliselt jaotada ja kaitsta, lehed aga mitte.

3. Otsingu ja segmentimise eelised

Programmeerijale läbipaistev lehitsemine välistab välise killustatuse ja tagab seega põhimälu tõhusa kasutamise. Põhimällu sisse ja välja liikuvad tükid on fikseeritud ja sama suurusega, seega on võimalik välja töötada keerukad mäluhalduse algoritmid, mis kasutavad ära programmi käitumist. Segmentimine on arendajale nähtav ja suudab hallata andmete struktuuri kasvu, modulaarsust ning vahetuse ja kaitse tuge.

Leheküljed vs segmentimine: võrdlusdiagramm

Lehitsemine

Segmentimine

fikseeritud lehtede suurus segmentide suurus ei ole fikseeritud
programmeerijale nähtamatu programmeerija jaoks nähtav
üks lineaarne aadressiruum mitu lineaarset aadressiruumi
ei luba rakenduse komponentide loogilist jaotamist ja kaitset lubab

Lehekülgede ja segmentide kokkuvõte

  • Lehekülg põhineb kogu aadressiruumi jaotusel fikseeritud pikkusega plokkidel, mida käitatakse mälu kvantiseerimisena. Lisaks on vaja ette näha vahend vaba mälu märkimiseks, mida saab käivitada iga lehe „päise” olemasolu abil, mis näitab lehe olekut (globaalne lingitud loend, kus iga sõlm osutab järgmisele tasuta lehele) või tasuta lehe aadressi paigutamine globaalne massiiv , mis on tavaliselt halvim lahendus.
  • Segmenteerimine tähendab aadressiruumi jagamist segmentideks, millel on selgelt märgitud juurdepääsuõigused MMU protsessor . Segmendi sees eraldavad protsessid täpselt nii palju mälu kui vaja, kuid mäluhalduse probleem seisneb selles, kuidas selline eraldis tagada, kui see suudab säilitada piisavalt suurt pidevat plokkmälu, mis võib vajada mõnda aega.