OPERATIVNI SISTEMI
Virtuelna memorija

Koncept virtuelne memorije je jedna od najboljih ideja primjenjenih na računarske sisteme. Glavni razlog za uspjeh ove ideje je da virtuelna memorija radi automatski, tj. bez intervencija programera aplikacija.

Osnovna prednost korišćenja virtuelne memorije je mogućnost izvršavanja programa koji zahtijeva memorijski prostor veći od fizičke (operativne) memorije, raspoložive na datom računarskom sistemu. Koncept virtuelne memorije stvara utisak korisniku da je njegov program u potpunosti učitan u memoriju i izvršen. Prije nastanka koncepta virtuelne memorije programer je morao da vodi računa da njegov program može da stane u fizičku memoriju. Osim toga, primjenom virtuelne memorije moguće je dijeljenje računara između procesa čija je veličina ukupnog adresnog prostora veća od veličine fizičke memorije.

Program za upravljanje memorijom proširuje RAM memoriju sa rezervisanim dijelom memorijskog prostora na disku. Prošireni dio RAM memorije se naziva zamjenski (eng. swap) prostor. Proširenje RAM memorije zamjenskim prostorom ima isti efekat kao instaliranje dodatne RAM memorije. U mnogim slučajevima dovoljno je povećati zamjenski prostor kako bi se izvršavali veći programi. Operativni sistem jedino mora da obezbjedi da program i podaci budu raspoloživi u RAM memoriji u trenutku kada su potrebni. Dijelovi programa kojim se ne pristupa često i dijelovi programa koji se koriste za upravljanje greškama se prenose na zamjenski prostor. Kada bilo koji od tih dijelova zatreba, program za upravljanje memorijom taj dio prenosi u RAM memoriju.

Koncept virtuelne memorije posebno dolazi do izražaja kod višekorisničkih operativnih sistema, jer kod prenošenja dijelova programa ili podataka u/iz operativne memorije procesor ne mora da čeka, vec odmah prelazi na izvršavanje drugog posla. Svaka aplikacija ima svoj virtuelni adresni prostor koji operativni sistem preslikava u fizičku memoriju. Veličina virtuelne memorije je ograničena samo veličinom zamjenskog prostora na disku. Jednostavno rješenje korišćeno kod prvih Unix sistema je posebna particija diska koja se koristi samo kao zamjenski prostor. Kod takvog rješenja prostor diska se dijeli na dva glavna dijela: jedan koji se koristi za straničenje i drugi koji se koristi za file sistem. Problem sa ovakvim pristupom je nefleksibilnost.

Postoje sljedeće osnovne vrste organizacije virtuelne memorije:

  • segmentna,
  • stranična,
  • segmentno-stranična.

Organizacija sa dinamičkim segmentima

Za preslikavanje adresa kod upravljanja memorijom pomoću dinamičkih segmenata operativni sistem koristi tabelu segmenata kao što je prikazano na slici 1.


Slika 1. Preslikavanje logičke adrese u fizičku pomoću tabele segmenata

Organizacija sa dinamičkim stranicama

Operativni sistem preslikava stranice virtuelne memorije u okvire fizičke memorije. Stvarni pristup memorijskim lokacijama izvršava hardver koji koristi preslikavanje zadato od strane operativnog sistema. Za preslikavanje adresa kod upravljanja memorijom pomoću dinamičkih stranica operativni sistem koristi tabelu stranica kao što je prikazano na slici 2. Tabela stranica je linearan niz čiji je indeks broj virtuelne stranice. Virtuelna stranica se preslikava u broj fizičkog okvira koji sadrži tu stranicu. Tipična tabela stranica, osim adrese okvira, ima sljedeće dodatne podatke:

  • bit koji pokazuje da li se stranica nalazi u operativnoj memoriji, tj. da li je stranici dodijeljen okvir ili ne (valid ili present bit),
  • bit koji pokazuje da li je stranica u operativnoj memoriji modifikovana ili ne (dirty ili modified bit),
  • bit koji pokazuje da li je stranica bila skoro korišćena ili ne (referenced ili used bit),
  • dozvola pristupa koja označava da li je stranica read-only ili read-write,
  • nekoliko bita namjenjenih za stvarno adresiranje stranice u operativnoj memoriji.


Slika 2. Preslikavanje logičke adrese u fizičku pomoću tabele stranica

Problem koji nastaje kod korišćenja tabele stranica je činjenica da su za svaki pristup podacima potrebna dva pristupa fizičkoj memoriji. Prvi memorijski pristup je pristup tabeli stranica, a drugi stvarnim podacima.

Dinamička segmentno-stranična organizacija

Segmentiranje i straničenje se često kombinuju kako bi se međusobno poboljšali. Segmentirano straničenje je korisno kada tabela stranica postane veoma velika. Velika sekcija susjednih vrsta tabele stranica koje se ne koriste se ne može zamijeniti sa jednom vrstom u tabeli segmenata koja pokazuje na nultu adresu tabele stranica. Straničenje segmenata donosi poboljšanja kada postoje veoma veliki segmenti koji zahtijevaju veliko vrijeme za dodijelu memorijskog prostora. Straničenjem segmenata redukuje se neiskorišćena memorija usljed eksterne fragmentacije i pojednostavljuje se dodjela memorije.

    Index