Skirtumas tarp ieškos ir segmentų

Atminties valdymas yra viena iš pagrindinių operacinės sistemos funkcijų. Šiuolaikinės operacinės sistemos leidžia kiekvienam procesui gauti daugiau virtualiosios atminties nei bendras faktinės (fizinės) atminties dydis tam tikroje kompiuterio sistemoje. Pagrindinis atminties valdymo tikslas yra suderinti didelę, bet lėtą atmintį su maža, bet greita atmintimi, kad būtų pasiektas didesnės didelės spartos atminties efektas.

Kas yra ieškos?

Atskyrimas tarp fiksuoto ir kintamo skaidymo yra neveiksmingas atminties panaudojimo prasme, nes dėl fiksuoto skaidymo vidinis susiskaidymas yra vidinis, o dinaminis. Galimas fragmentacijos problemos sprendimas - leisti procesą nerašyti į nuolatinės atminties bloką. Programa gali būti savavališkai išsklaidyta atmintyje. Šiuo atveju darbinė atmintis yra padalinta į mažesnius fiksuoto dydžio blokus, vadinamus rėmais. Programos loginė adreso erdvė taip pat yra padalinta į tokio paties dydžio blokus, vadinamus puslapiais. Kai programa įrašoma į atmintį, puslapiai įrašomi į laisvos atminties rėmus. Kad būtų lengviau perkelti programas iš disko į darbinę atmintį, diskas taip pat yra padalintas į tokio paties dydžio rėmus kaip ir atminties rėmai. Taigi, vienas rėmas iš disko yra įrašomas į vieną darbinės atminties rėmelį. Asmenų paieškos sistema veikia tokiu būdu: kai programa priimama vykdyti, apskaičiuojamas jos dydis, kuris išreiškiamas reikiamu puslapių skaičiumi. Jei pakankamas kadrų skaičius yra laisvas, procesas įrašomas atminties puslapyje kiekviename puslapyje. Tuo pačiu metu į rėmelių lentelę įvedamas kadrų, kuriuose yra parašytas kiekvienas puslapis, skaičius.

Kas yra segmentacija?

Vartotojo programą ir susijusius duomenis galima suskirstyti į keletą segmentų. Visų programų segmentai nebūtinai turi būti tokio paties dydžio, nors yra maksimalus segmentų ilgis. Kaip ir ieškant, segmentinį loginį adresą sudaro dvi dalys, šiuo atveju segmentų skaičius ir dislokacijos tame segmente. Dėl skirtingų dydžių segmentų naudojimo segmentai yra panašūs į dinaminį skaidymą. Jei nėra persidengiančios schemos arba nenaudojama virtualioji atmintis, visus programos segmentus reikia įkelti į atmintį, kad jie būtų vykdomi. Skirtumas, palyginti su dinaminiu skaidymu, yra tas, kad segmentavimas gali užtrukti daugiau nei vieną skaidinį ir tas skaidinys neturi būti greta. Segmentacija išsprendžia vidinio susiskaidymo problemą, tačiau, kaip ir dinaminis skaidymas, išlieka išorinio susiskaidymo problema. Kadangi procesas yra padalintas į keletą mažesnių dalių, išorinis suskaidymas paprastai yra mažesnis. Skirtingai nuo ieškos, kuri programuotojui nematoma, segmentacija paprastai yra matoma ir tinkama programoms ir duomenims tvarkyti. Modulinio programavimo tikslais programą ar duomenis galima dar padalyti į kelis mažesnius segmentus. Šios technikos neigiama pusė yra ta, kad programuotojas turi žinoti maksimalaus segmento dydžio apribojimus. Kitas patogumas naudojant skirtingo dydžio segmentus yra tas, kad nėra jokio loginio ir fizinio adresų ryšio. Panašiai kaip ieškant, paprasta segmentavimo technika kiekvienam procesui naudoja segmentų lentelę ir pagrindinėje atmintyje galimų blokų sąrašą.

Skirtumas tarp ieškos ir segmentų

1. Puslapis ir segmentai

Puslapiai pateikia virtualią ir fizinę adresų erdvę bei antrinę atminties vietą vienodo ilgio blokuose (puslapiuose). Tai leidžia nuolatinę virtualią adresų erdvę skirti paskirstymo procesui (nebūtinai nuolatos paskirstomam) tikroje adresų erdvėje ir antrinėje atmintyje. Net puslapis kaip terminas nurodo atmintį, o ne loginius objektus, kurie yra matomi programos lygiu. Segmentavimas suteikia virtualią adresų erdvę blokams (segmentams), kurie tiesiogiai atitinka objektus programos lygiu. Dėl šios priežasties segmentas neturi fiksuoto ilgio, todėl programos metu gali būti pakeistas net segmento dydis. Todėl apsauga ir padalijimas yra įmanomi objekto lygiu ir yra matomų procesų, kai atliekamas segmentavimas.

2. Puslapis ir segmentai

Programos kūrėjas nežino, kad ieškos. Jis rašo programas tarsi atmintis yra linijinė, o operacinė sistema ir procesorius yra susirūpinę dėl jos skaidymo ir konvertavimo į virtualius adresus. Tačiau segmentavimo sistemų programuotojas savo programose išvardija dvi adreso, segmento ir puslapio dalis. Visi puslapiai yra vienodo dydžio, o segmentai yra skirtingi. Segmentavimas turi keletą linijinių adresų vietų, o ieškos tik vieną. Segmentai leidžia logiškai atskirti ir apsaugoti programų komponentus, o puslapiai - ne.

3. Puslapis ir segmentai

Programuotojui skaidrus ieškos procesas pašalina išorinį suskaidymą ir tokiu būdu užtikrina efektyvų pagrindinės atminties naudojimą. Dalelės, kurios juda į pagrindinę atmintį ir iš jos, yra fiksuotos ir vienodo dydžio, todėl įmanoma sukurti sudėtingesnius atminties valdymo algoritmus, išnaudojančius programos elgesį. Segmentai yra matomi kūrėjui ir turi galimybę valdyti duomenų struktūros augimą, moduliškumą ir palaikyti keitimąsi bei apsaugą.

Puslapis ir segmentai: palyginimo diagrama

Puslapis

Segmentavimas

fiksuotas puslapių dydis segmentai nėra fiksuoti pagal dydį
nematomas programuotojui matomas programuotojui
viena linijinė adreso sritis daug linijinių adresų vietų
neleidžia logiškai atskirti ir apsaugoti komponentų leidžia

Puslapio ir segmentų santrauka

  • Puslapių paieška grindžiama visos adresų erdvės paskirstymu fiksuoto ilgio blokuose, kurie naudojami kaip atminties kvantai. Be to, būtina numatyti turimos atminties žymėjimo priemones, kurias būtų galima įvykdyti turint kiekvieno puslapio „antraštę“, nurodančią puslapio būseną (visuotinis susietų sąrašas, kuriame kiekvienas mazgas nukreipia į kitą laisvą puslapį), arba įdėdami nemokamo puslapio adresą į bendrą masyvą, kuris paprastai yra blogiausias sprendimas.
  • Segmentavimas reiškia adreso erdvės padalijimą į segmentus, kuriuose aiškiai pažymėtos MMU procesoriaus prieigos teisės. Segmentų viduje procesai skiria tiksliai tiek atminties, kiek jiems reikia, tačiau atminties valdymo problema yra ta, kaip užtikrinti tokį paskirstymą ten, kur būtų galima išsaugoti pakankamai didelę nuolatinę blokinę atmintį, kuriai gali prireikti šiek tiek laiko..