OPERATIVNI SISTEMI
UPRAVLJANJE MEMORIJOM

Upravljanje memorijom je jedna od osnovnih funkcija operativnih sistema. Za izvršavanje svakog procesa je potrebna operativna memorija. Savremeni operativni sistemi omogućavaju svakom procesu da dobije više virtuelne memorije, nego što je ukupna veličina stvarne (fizičke) memorije na datom računarskom sistemu. Glavni cilj kod upravljanja memorijom je da se kombinovanjem velike spore memorije sa malom brzom memorijom ostvari efekat velike brze memorije. Za upravljanje memorijom bitni su programski prevodilac, operativni sistem i hardver. Prvo, programski prevodilac struktuira adresni prostor date aplikacije. Zatim, operativni sistem preslikava strukture programskog prevodioca u hardver. Na kraju, hardver izvršava stvarne pristupe memorijskim lokacijama.

Problem upravljanja memorijom

Najvažnije aktivnosti operativnog sistema u dijelu za upravljanje memorijom su:

    1) vođenje evidencije o tome koji se dijelovi memorije trenutno koriste i ko ih koristi,
    2) donošenje odluke o učitavanju procesa u memoriju, odnosno koje procese prebaciti u memoriju kada memorijski prostor postane raspoloživ,
    3) dodjela i oslobađanje memorijskog prostora po potrebi.

Da bi se jedan program izvršio neophodno je da se u memoriju unesu i njegove instrukcije i podaci, kako bi bili dostupni centralnom procesoru. To ne znači da sve instrukcije i svi podaci moraju da budu u memoriji sve vrijeme tokom izvršavanja programa. Moguće je unijeti u memoriju samo jedan dio instrukcija programa sa podacima neophodnim za njihovo izvršavanje. Po izvršavanju tog dijela programa u memoriju se može unijeti, u sve lokacije, sljedeći niz naredbi sa podacima potrebnim za njihovo izvršavanje. U uslovima višeprogramskog rada ovakva mogućnost je posebno zanimljiva. Držanjem u memoriji dijelova, a ne cijelih programa, moguće je aktivirati više programa u jednom vremenskom intervalu čime se povećava stepen višeprogramskog rada, a time i stepen iskorišćenja ostalih resursa računara. Naravno, ovakav način rada zahtijeva dodatne hardverske komponente i povećava složenost operativnog sistema. Sa stanovišta operativnog sistema memorija je podjeljena u dva nivoa. Prvi nivo čini primarna (glavna) memorija u kojoj se nalaze trenutno aktivni dijelovi različitih programa, dok drugi nivo čini sekundarna (pomoćna) memorija sa relativno brzim pristupom, na kojoj se čuvaju kompletne kopije svih aktivnih programa.

Operativni sistem problem upravljanja memorijom svodi na problem vremenske i prostorne raspodjele programa ili dijelova programa između dva nivoa memorije. Drugim riječima, upravljanje memorijom se sastoji od sljedeće tri komponente:

  • upravljanje unošenjem ("fetch policy") – u smislu donošenja odluke o tome kada će se program ili njegovi dijelovi unijeti u memoriju,
  • upravljanje smještanjem ("placement policy") – u smislu donošenja odluke o tome gdje će se program ili njegovi dijelovi smjestiti u memoriji,
  • upravljanje zamjenom ("replacement policy") – u smislu donošenja odluke o tome koji će se program ili dijelovi programa izbaciti iz memorije da bi se oslobodio prostor za unošenje drugog programa ili dijelova drugog ili istog programa.

Različite metode i tehnike upravljanja memorijom koje se primjenjuju u operativnim sistemima razlikuju se upravo po tome kako i na osnovu čega donose neku od navedenih odluka. Na slici 1 su prikazani načini upravljanja memorijom. Dodjela memorije može da bude kontinualna i diskontinualna. Ako se za dati proces koriste susjedne memorijske lokacije u okviru datog dijela memorije, tada je to kontinualna dodjela memorije. Ukoliko se za dati proces koriste dijelovi memorije kod kojih postoji diskontinuitet u pogledu susjednosti lokacija, tada je to diskontinualna dodjela memorije. Samo upravljanje memorijom može da bude statičko i dinamičko. Statičko upravljanje memorijom je kada se cio program unosi u memoriju prije izvršavanja programa. Dinamičko upravljanje memorijom je kada se veličina memorije određuje na osnovu veličine programa u trenutku unošenja programa u memoriju ili kada se dijelovi programa mogu unostiti u memoriju u toku izvršavanja programa.


Slika 1. Načini upravljanja memorijom

 

Prema tome, u opštem slučaju postoje sljedeći načini upravljanja memorijom:

    - pomoću statičkih particija,
    - pomoću dinamičkih particija,
    - pomoću statičkih stranica,
    - pomoću statičkih segmenata,
    - pomoću dinamičkih stranica,
    - pomoću dinamičkih segmenata,
    - pomoću dinamičkih stranica i segmenata.

Sistem sa više nivoa

Da bi procesor mogao da čita instrukcije ili izvršava operacije nad podacima potrebno je da te instrukcije, odnosno podaci budu smješteni unutar fizičke (RAM) memorije. Procesor i RAM memorija su povezani pomoću magistrale podataka veoma velike brzine. Magistrala podataka najčešće može imati širinu 32, 64 ili 128 bita. Širina magistrale podataka definiše količinu podataka koja se može prenijeti u toku jednog ciklusa magistrale. Širina magistrale podataka ne definiše maksimalnu veličinu programa ili maksimalnu veličinu podataka. To je određeno širinom adresne magistrale. Adresna magistrala može da ima bilo koju širinu u zavisnosti od procesora.

Memorijski sistem savremenih računarskih sistema je više nivoski sistem, kao na slici 2. Prikazana su četiri nivoa: registri, keš memorija, glavna memorija (RAM) i magnetni diskovi. Za svaki nivo prikazan je kapacitet, prosječno vrijeme pristupa i naziv memorije. Kapacitet i prosječno vrijeme se stalno poboljšavaju. Takođe, na svakom memorijskom nivou postoji kompromis brzine i cijene. Iako brzina prenosa podataka između procesora i RAM memorije može da bude veoma velika, u mnogim slučajevima između procesora i RAM memorije se koristi keš memorija. Keš memorija je mnogo brža, ali i skuplja. Ona ubrzava rad aplikacija. Iz ugla krajnjeg korisnika keš memorija je nevidljiva. U prosjeku oko 10% ukupne veličine programa se nalazi u glavnoj memoriji, a oko 1% programa se nalazi u keš memoriji. U registrima se nalazi jedna instrukcija i nekoliko podataka.


Slika 2. Memorijska piramida

Na datom računaru najčešće postoji više programa ili procesa koji su aktivni u isto vrijeme i svaki od njih pristupa RAM memoriji. Da bi omogućio različitim procesima da koegzistiraju na datom računaru operativni sistem svakoj aplikaciji dodjeljuje virtuelni adresni prostor. Takođe, operativni sistem preslikava virtuelni adresni prostor u fizički memorijski prostor. U opštem slučaju svaki put kada se program učita u glavnu memoriju on će da bude na različitim memorijskim lokacijama. Odnos između brzine pristupa i cijene kod različitih nivoa memorije prikazan je na slici 3.


Slika 3. Memorijski sistem kod savremenih računarskih sistema

Program za upravljanje memorijom (eng. memory manager) izvršava dvije osnovne operacije: dodjelu kontinualnog memorijskog prostora i oslobađanje zauzete memorije. Ponekad se koristi i treća operacija pomoću koje se može promijeniti veličina već dodjeljene memorije, tako što se veličina dodjeljene memorije smanji ili poveća.

Virtuelne i fizičke adrese

Razlikujemo logički i fizički memorijski adresni prostor. Adresa koju generiše procesor naziva se logička adresa, dok se adresa kojom se puni memorijski adresni registar naziva fizička adresa. Fizička adresa je adresa operativne memorije. Preslikavanje logičkih adresa u fizičke je obavezno. Fizičke i logičke adrese su identične ako se primjene metode vezivanja adresa (eng. address binding methods) u vrijeme prevođenja i punjenja programa. Ako se primjeni vezivanje adresa u vrijeme izvršavanja programa fizička i logička adresa su različite i tada se logička adresa naziva virtuelna adresa.

Upravljanje memorijom obuhvata preslikavanje adresa kao što je to prikazano na slici 4. Virtuelna adresa je adresa u programu i nju generiše procesor. Fizička adresa je adresa na računarskom hardveru. Kod savremenih računara preslikavanje iz virtuelne u fizičku adresu vrši poseban hardver koji se naziva jedinica za upravljanje memorijom (eng. Memory Management Unit, MMU). Za ovo preslikavanje adresa se kaže i da je to preslikavanje ili translacija iz logičke u stvarnu (fizičku) adresu. Hardver šalje jedinici za upravljanje memorijom fizičke adrese i na taj način vrši adresiranje glavne memorije. Kod većine savremenih mikroračunarskih sistema jedinica za upravljanje memorijom je ugrađena u čip procesora.


Slika 4. Preslikavanje virtuelne adrese u fizičku pomoću posebnog hardvera

U okviru jedinice za upravljanje memorijom nalazi se poseban registar za relociranje adresa. Vrijednost upisana u registar za relociranje se dodaje svakoj virtuelnoj adresi.

Fragmentacija

Fragmentacija se odnosi na neiskorišćenu memoriju koju sistem za upravljanje memorijom ne može da dodijeli procesima. Postoje dva tipa fragmentacije: interna i eksterna. Interna fragmentacija je dio memorije unutar regiona ili stranice koja je dodjeljena datom procesu i ne koristi se od strane tog procesa. Interna fragmentacija je prouzrokovana različitom veličinom dodjeljene memorije i programa koji je učitan u taj dio memorije. Taj dio memorije nije raspoloživ za korišćenje drugim procesima sistema sve dok dati proces ne završi sa radom ili ne oslobodi dodjeljenu memoriju. Interna fragmentacija ne postoji kod upravljanja memorijom pomoću dinamičkih particija, kod statičkih segmenata i kod dinamičkih segmenata. Eksterna fragmentacija je neiskorišćena memorija između particija ili segmenata. Ova memorija nije kontinualna, već se sastoji iz više manjih dijelova. Eksterna fragmentacija ne postoji kod upravljanja memorijom pomoću statičkih i pomoću dinamičkih stranica. Za prevazilaženje problema eksterne fragmentacije koristi se tehnika sažimanja ili kompakcije (eng. compaction). Kompakcija se izvršava u tri faze. Prvo se određuje nova lokacija za svaki blok koji se premješta. Zatim se ažuriraju svi pokazivači na taj blok u skladu sa novom lokacijom. U trećoj fazi se podaci premještaju na novu lokaciju.

    Index