e-gradiva     Sistemi Motorola Omrežja      
  logotip  
SERŠ Maribor    

Navidezni pomnilnik

Mnogokrat se zgodi, da je glavni pomnilnik premajhen. Tudi, če ga je za en program dovolj, si pri večuporabniških računalnikih vsi programi delijo pomnilniški prostor. Navidezni pomnilnik je mehanizem, ki daje uporabniku vtis, da je glavnega pomnilnika več kot pa ga je v resnici. Rečemo mu tudi virtualni pomnilnik. Problem premajhnega pomnilniškega prostora je bil nekoč precej bolj pereč kot je danes.

Za razumevanje je bistvenega pomena, da ločimo logični naslov od fizičnega. Logični naslov je znotraj programa.To je naslov določenega ukaza ali podatka. To je tudi naslov, ki ga generira procesor med izvrševanjem programa. Fizični naslov je naslov pomnilniške besede (glavnega) pomnilnika. To je torej naslovna kombinacija na naslovnem vodilu. Logični naslovi sestavljajo logično naslovno področje, to je naslovno področje programa. Velikost (obseg) logičnega naslovnega področja je dan z velikostjo programa. Fizični naslovi tvorijo fizično naslovno področje pomnilnika. Velikost (obseg) fizičnega naslovnega področja je dana z velikostjo pomnilnika.

Navidezni pomnilnik je v resnici prostor na trdem disku. Če operacijskemu sistemu zmanjka prostora v fizičnem pomnilniku, lahko uporablja navidezni pomnilnik (izmenjevalni prostor). Izmenjevalni pomnilnik se imenuje tudi zato, ker operacijski sistem vzame nekaj podatkov, za katere misli, da jih ne boste potrebovali nekaj časa iz glavnega pomnilnika in jih shrani na disku v zato rezerviran prostor. Operacijski sistem potem naloži nove podatke, ki jih trenutno potrebujete. Nepotrebne podatke je "izmenjal" s podatki, ki jih potrebujete v točno določenem trenutku. Navidezni ali izmenjevalni pomnilnik ni tako hiter kot fizični pomnilnik, zato operacijski sistem poskuša ohraniti podatke (posebno tiste pogosto uporabljene) v fizičnem pomnilniku. Torej je skupni pomnilnik kombinacija fizičnega in navideznega pomnilnika.

Delovanje navideznega pomnilnika mora biti avtomatizirano. Namen avtomatizacije je dvojen: razbremeniti programerja dela z navideznim pomnilnikom in zagotoviti hitro izvajanje programa. Na takem računalniku je za programerja pomnilniški prostor v pomožnem pomnilniku videti kot glavni pomnilnik ‐ prenosi med obema so za programerja nevidni. Od tod izhaja ime navidezni pomnilnik. Večina današnjih srednjih in velikih računalnikov uporablja eno od oblik navideznega pomnilnika. Osnovni razlog za tak razvoj je v bistveno nižjiceni enegabita pomožnega pomnilnika v primerjavi z glavnim pomnilnikom.

Preslikovanje navideznih naslov

Preslikovanje naslovov navideznega pomninika

Preslikovanje naslovov

Pri vsakem računalniku z navideznim pomnilnikom se naslovi, ki jih zahteva program, nanašajo na navidezni pomnilnik in se zato imenujejo navidezni naslovi (angl. virtual addresses). To velja tako za naslove ukazov kot tudi za naslove operandov. Torej so vsi naslovi, ki jih vidi programer, navidezni.

Celoten navidezni pomnilnik je shranjen v največjem in najpočasnejšem delu mdash; v pomožnem pomnilniku. Podmnožica navideznega pomnilnika mora biti shranjena v glavnem pomnilniku, ki je običajno precej manjši od navideznega. Podmnožica te podmnožice je lahko shranjena v predpomnilniku, če ga računalnik ima.

CPE ima dostop samo do glavnega pomnilnika (lahko sicer skozi predpomnilnik), zato je potrebno vsak navidezni naslov preslikati v naslov glavnega pomnilnika. Temu naslovu pravimo fizični naslov.

Ostranjevanje

Med načini za realizacijo navideznega pomnilnika je najstarejši tisti, ki ga danes poznamo pod imenom ostranjevanje (angl.paging). Prvič je bil uporabljen leta 1961 na računalniku Atlas, ki je bil prvi skladovni računalnik.

Osnovna ideja ostranjevanja je preprosta. Pomožni pomnilnik je razdeljen na bloke enake velikosti, ki jim pravimo strani (pages). Vse strani skupaj sestavljajo navidezni pomnilnik. Na enako velike bloke, ki jim pravimo okvirji strani (angl. page frames), je razdeljen tudi glavni pomnilnik. Vsako stran navideznega pomnilnika je mogoče prenesti v poljubnega od okvirjev.

Preslikovalna funkcija pri ostranjevanju je določena s posebno tabelo, ki se imenuje tabela strani (angl. page table). ker je število strani stalno, je v naprej določena tudi velikost tabele strani.

Segmentacija

Najmanjša elementa vsakega programa sta ukaz in enostavna podatkovna beseda. Ukazne ali podatkovne zgradbe se običajno označujejo s splošnim izrazom modul. Vsak program si lahko predstavljamo kot zbirko modulov. Strojni modul, ki ga je mogoče povezati z drugimi, naložiti v pomnilnik in izvajati, označujemo z izrazom segment. Segment je zaporedje logično povezanih pomnilniškihbesed, ki ima svoje ime in je strojni ekvivalent v programu definiranega modula.

Na strojnem nivoju je program videti kot zbirka med seboj povezanih segmentov. Povezave so potrebne, ker lahko nek segment uporabljaali kliče nek drug segment - ukazniali podatkovni. Ker je vsak segment v logičnem smislu enota, je smiselno imeti v glavnem pomnilniku segmente vceloti. Navidezni pomnilnik, ki kotbloke uporablja segmente, je znan pod imenom segmentacija (angl.segmentation).

Število in velikost segmentov ni stalno in se lahkocelo med izvajanjem programa spreminja. Vsak segment je med izvajanjem progama potrebno prenesti v glavni pomnilnik. ker pa so segmenti različno veliki, v glavnem pomnilniku nimamo ničesar, kar bi ustrezalo okvirjem strani. Namesto tega se lahko vsak segment prenese na poljuben naslov v glavnem pomnilniku. Pri segmentaciji mora programer razdeliti program na segmente ali pa to delo opravi prevajalnik.

Segmentiran pomnilnik temelji na izgledu naslovnega področja programa, kot ga vidi uporabnik - programer. Uporabnik ne vidi programa kot linearno zaporedje pomnilniških naslovov, ampak kot zbirko različno obsežnih kosov programa - segmentov. Logično naslovno področje sestavlja zbirka različno dolgih segmentov. Ta se zvezno namesti v pomnilnik, pri tem moramo upoštevati, da če se segment namesti v pomnilnik je potem v pomnilniku v celoti. Segment je določen z začetnim naslovom v pomnilniku in dolžino segmenta. Logični naslov sestavlja ime segmenta in odmik znotraj segmenta. V času delovanja se preko segmentnih registrov logični naslovi preslikajo v fizične. Sočasno je lahko aktivnih toliko segmentov, koliko je segmentnih registrov.

Segmentiranje z ostranjenjem

S kombinacijo obeh metod se želi izkoristiti prednosti tako ene kot druge. Logično naslovno področje programa se deli na različno obsežne dele - segmente. Vsak segment se deli na enako velike dele. Tu se dvodimenzionalni logični naslovi preslikajo v enodimenzionalne naslove preko segmentne tabele. V pomnilniku se tako nahajajo samo nekateri segmenti. Segmenti so ostranjeni vendar še logični naslov ni fizični. Tako se logični naslovi preko tabele preslikajo v fizične naslove - v glavnem pomnilniku.

SERŠ Maribor, Strokovna gimnazija, leto: 2004/05, avtor: Sebastjan Božič