Upravljanje Memorijom

Embed Size (px)

Citation preview

  • 7/21/2019 Upravljanje Memorijom

    1/19

    Upravljanje memorijom

    Dosada smo vidjeli kako skup procesa dijeli procesor upoznajui se sa pojedinim algoritmimarasporeivanja procesa. Razliite realizacije rasporeivanja procesa omoguavaju poveanjeperformansi sistema, to i jeste primarni cilj. Meutim, bez obzira o kojem se tipu algoritma

    rasporeivanja radilo, svaki od njih podrazumijeva dranje vie procesa u memoriji. To znaida se memorija mora dijeliti. Problem dijeljenja memorije se jo uslonjava imajui u viduinjenicu da, pored prostora za korisnike procese, u radnoj memoriji mora biti obezbijeen iprostor za procese jezgre operativnog sistema. to znai da se ukupna memorija dijeli na dvadijela: jedan dio je za jezgru (kernel) operativnog sistema, a drugi za program(e) koji setrenutno izvrava(ju). U sistemima koji rade sa vie programa korisniki dio memorije morase dalje dijeliti i prilagoditi radu sa vie procesa.

    Dijeljenje memorije je jedan od osnovnih zadataka operativnog sistema, koji se ogleda upravilnom i adekvatnom upravljanju memorijom. U tu svrhu postoje razliite vrste algoritama,a oni nisu nita drugo nego razliite metode kojima se ostvaruje upravljanje memorijom.

    Svaki od ovih pristupa ima svoje prednosti i nedostatke. Izbor metode upravljanja memorijomzavisi od mnogo faktora, a naroito od hardvera sistema.

    Memorija je centralni dio modernih raunarskih sistema neophodan za njegovofunkcioniranje. Ona se sastoji od velikog niza rijei ili bajtova od kojih svaki posjedujevlastitu adresu. Procesor dobavlja instrukcije iz memorije s obzirom na vrijednostprogramskog brojaa. Ove instrukcije mogu izazvati dodatno uitavanje i pohranjivanje naposebne memorijske adrese.

    U jednom uobiajnom ciklusu instrukcijskog izvravanja logino je da se prvo dobavljainstrukcija iz memorije, nakon ega slijedi njeno dekodiranje. Dekodiranje obino

    podrazumijeva dohvatanje operanada iz memorije. Nakon izvravanja instrukcije nadoperandima, rezultati mogu biti pohranjeni u memoriju. Memorijska jedinica vidi samo nizmemorijskih adresa, pri emu ne zna kako su ove adrese generisane (da li pomouinstrukcijskog brojaa, indeksiranja ili na neki drugi nain), niti za ta su namijenjene (ili zainstrukcije ili za podatke). U krajnjoj liniji, sa stanovita upravljanja memorijom, nije nivano kako program generie memorijske adrese. Vano je samo da se radi o nizumemorijskih adresa koje je generisao pokrenuti program.

    to se tie hardvera, radna memorija i registri procesora su jedini memorijski ureaji kojimaprocesor direktno pristupa. U opem sluaju procesor pristupa registrima unutar svog jednogradnog takta. Veina procesora moe dekodirati instrukcije i izvesti jednostavne operacije nadsadrajem registara brzinom od jedne do nekoliko operacija po jednom radnom taktu. To nijesluaj sa radnom memorijom. Njoj se pristupa putem memorijske sabirnice (bus). Pristupanjeradnoj memoriji moe potrajati i nekoliko radnih taktova procesora. U takvim sluajevimaprocesor miruje poto nema potrebne podatke za dovrenje instrukcije koja se izvrava.Ovakva situacija je nedopustiva, pa se dodaje brza memorija izmeu procesora i glavnememorije. Tip memorije koji se koristi kao svojevrstan amortizer izmeu razliitih brzinaprocesora i glavne memorije zove se ke (cache).

    Pored gore navedenih problema dijeljenja memorije i usklaivanja brzina procesora i glavnememorije, sa aspekta upravljanja memorijom veoma vana je i zatita. Ona mora obezbijediti

    mehanizme pomou kojih se moe sprije

    iti da korisni

    ki programi slu

    ajno ili namjerno

  • 7/21/2019 Upravljanje Memorijom

    2/19

    modificiraju kod ili strukturu podataka drugih korisnikih procesa ili procesa operativnogsistema.

    Iz ovog kratkog pregleda rada memorije, njenog mjesta i uloge u sistemu, kao i problema kojise javljaju jasno je da velika panja mora biti usmjerena na njeno upravljanje. Svakako da je

    to samo jo jedan od zadataka operativnog sistema koji se sprovodi preko memorijskogmenadera.

    Bilo kako bilo, upravljanje memorijom, slino kao i upravljanje procesima, sprovodi se prekoapstrakcije stvarne fizike memorije.

    Upravljanje bez apstrakcije

    Najjednostavniji metod apstrahovanja memorije je da uope nema apstrakcije. Prvi mainframeraunari (prije 1960.), miniraunari (prije 1970.), i PC (prije 1980.) nisu imali mogunost

    memorijske apstrakcije. Svaki je program jednostavno vidio fiziku memoriju. Kad biprogram izvodio instrukciju kao to je MOV REGISTER1, 1000 raunar bi samo prebacio sadrajmemorijske lokacije 1000 uREGISTER1. Zato je memorijski model koji je stajao programeruna raspolaganju bila u stvari jednostavno fizika memorija. Dakle, skup adresa od 0 do nekenajvee vrijednosti, gdje je svaka adresa odgovarala eliji koja je obino sadravala 8 bita.

    Pod ovim uslovima, nije bilo mogue imati dva programa istovremeno u memoriji. Ako bijedan program upisao novu vrijednost na primjer u lokaciju 2000, onda bi se izbrisalavrijednost koju je drugi program pohranio na tom mjestu. Jednostavno bi dolo do pada obaprograma.

    Na slici lijevo su prikazane trivarijacije modela upravljanjamemorijom bez apstrakcije.Operativni sistem je mogao bitina dnu memorije u RAM-u(slika a), na vrhu u ROM-u(slika b), ili na vrhu u ROM-usu mogli biti upravljakiprogrami, a ostatak sistema uRAM-u (slika c). Prvi je model

    koriten u ranim mainframe i miniraunarima, drugi u nekim ru

    nim (handheld) ure

    ajima iugraenim sistemima, dok je trei model koriten kod ranijih PC koji su pokretali MS-DOS

    kod kojih je dio sistema u ROM-u nazivan BIOS (Basic Input Output System). Kod modela ai c greka u korisnikom programu mogla je jednostavno izbrisati cijeli operativni sistem.

    Kod sistema sa ovakvom organizacijom u opem sluaju samo jedan proces se moeizvravati u datom trenutku. im bi korisnik otkucao komandu operativni sistem bi kopiraozahtijevani program sa diska u memoriju i izvrio bi ga. Kad se proces zavri, operativnisistem prikae simbol za prompt, kojim korisniku kae da je spreman za sljedei zadatak, ieka novu komandu. Novom komandom se uitava novi program u memoriju pri emu seprethodni prebrie.

  • 7/21/2019 Upravljanje Memorijom

    3/19

  • 7/21/2019 Upravljanje Memorijom

    4/19

    Adresni prostor

    Izlaganje fizike memorije procesima ima dva glavna nedostatka. Prvo, ako korisnikiprogrami mogu adresirati svaki bajt memorije, onda lako mogu oboriti operativni sistem(ne)namjerno. Ovaj problem postoji ak i kad se izvrava samo jedan korisniki program.

    Drugo, teko je postii istovremeno izvravanje vie programa. Na PC uobiajno je imatinekoliko programa istovremeno otvorenih (tekst editor, e-mail program, Web pretraiva) odkojih je jedan u fokusu a ostali mogu biti reaktivirani na jedan klik mia. Poto je to tekopostii kad nema apstrakcije fizike memorije, neto mora biti uinjeno. Rjeenje je uvoenjeapstrakcije za memoriju: adresni prostor. Isto kao to koncept procesa stvara oblik apstrakcijeCPU za izvravanje programa, adresni prostor stvara oblik apstrakcije memorije za programekoji u njoj obitavaju. Adresni prostor je skup adresa koje proces moe zauzeti u memoriji.Svaki proces ima vlastiti adresni prostor nezavisan od adresnih prostora ostalih procesa (osimspecijalnih sluajeva kada procesi dijele adresne prostore). Kako bi se to postiglo, morapostojati mogunost odreivanja opsega adresa kojima proces moe pristupiti kao i osiguranjeda proces pristupi samo ovim adresama. To se obezbjeuje koritenjem baznog (base) i

    graninog (limit) registra. U tom se sluaju programi uitavaju u uzastopne memorijskelokacije gdje god ima dovoljno prostora, te bez relociranja tokom uitavanja (gornja slika c).Kad se proces izvrava, u baznom registru je fizika adresa u kojoj program poinje umemoriji, a granini registar sadrava duinu programa. Na lijevoj slici bazne i graninevrijednosti koje trebaju biti uitane u njihove hardverske registre kad se izvrava prvi program

    su 0 i 16384. Iste vrijednosti za drugi program su 16384 i16384. Kada bi se trei 16KB program uitao odmah iznaddrugog vrijednosti ovih registara bi bile 32768 i 16384.

    Svaki put kad se proces obrati memoriji, ili za prihvatanjekomande ili za itanje-pisanje podataka, CPU hardveruporeuje svaku adresu koja je generisana u korisnikommodu sa registrima, na nain da se dodaje vrijednost baznogregistra adresi koju generie proces prije slanja namemorijsku sabirnicu. U isto vrijeme, provjerava se da li jeta vrijednost izmeu vrijednosti baznog i zbira vrijednostibaznog i graninog registra (donja slika). Ako ovi uslovinisu zadovoljeni ne dozvoljava se pristup generisanimadresama. Na ovaj nain, bilo kakav pokuaj pristupakorisnikog programa memorijskom prostoru drugogprograma ili operativnog sistema tretira se kao greka.

    Bazne i granine registre uitavaoperativni sistem koji koristi specijalneprivilegovane instrukcije. Time jedoputeno operativnom sistemu damijenja vrijednosti registara, a u istovrijeme spreavaju se korisnikiprogrami u pokuaju mijenjanjasadraja registara. Znai, operativni

    sistem koritenjem ovih privilegovanih komandi moe uitati korisnike programe ukorisniki dio memorije, izbaciti ih iz memorije u sluaju greke, pristupiti i modificirati

    parametre sistemskih poziva itd.

  • 7/21/2019 Upravljanje Memorijom

    5/19

    Generisanje adresa

    Programi su u najveem broju sluajeva zapisanina disku u binarnom obliku (executable).Program se s diska uitava u memoriju kako bi

    postao proces koje se moe izvriti. U zavisnostiod sistema za upravljanje memorijom proces semoe i tokom obrade prebacivati iz radnememorije na disk i obratno. Skup procesa nadisku koji ekaju da budu uitani u memorijunaziva se ulazni red (input queue). Normalnaprocedura se sastoji u odabiru jednog od procesaiz ulaznog reda i njegovog uitavanja u radnumemoriju. Tokom izvravanja proces dohvata izradne memorije instrukcije i podatke, te u njuupisuje rezultate obrade. Po zavretku obrade

    memorijski prostor koji je proces koristioproglaava se slobodnim.

    Veina raunarskih sistema dozvoljava da seproces nalazi bilo gdje u radnoj memoriji. Toznai da se prva instrukcija korisnikog procesane mora se nalaziti na poetku adresnog prostora.U veini sluajeva korisniki program prolazikroz vie faza pripreme prije samog izvravanja

    (slika lijevo).

    Adrese se mogu prikazati na razliite naine u svakoj od ovih faza. U izvornom programuadrese su obino simbolike. Kompajler ove adrese vezuje (bind) s relativnim (relocatable)adresama (u odnosu na poetak programa). Nakon uitavanja programa u memoriju programuse dodjeljuje stvarna, apsolutna adresa. Svako vezivanje je mapiranje (preslikavanje) iz

    jednog adresnog prostora u drugi. Vezivanje instrukcija i podataka za memorijske adrese,odnosno dodjeljivanje adresa instrukcijama i podacima, moe se sprovesti u bilo kojoj fazipripreme programa za izvravanje: Vrijeme prevoenja: Ukoliko je u vrijeme prevoenja poznata adresa na kojoj e biti

    smjeten proces, onda se moe generisati apsolutna adresa. Vrijeme uitavanja: Kod savremenijih sistema u vrijeme prevoenja obino nije

    poznato gdjee se proces u

    itati. Tada programski prevodilac generira relativne adrese, aapsolutne se generiraju u trenutku uitavanja (punjenja) procesa u radnu memoriju.

    Ovakav pristup je fleksibilniji od prethodnog iz razloga to kod promjene poloajaprocesa u memoriji (npr. prenos procesa s jednog raunara na drugi) potrebno je samoponovo uitati proces u memoriju, a program punja (loader) automatski mijenjaapsolutne adrese. To znai da kod nije potrebno ponovo prevoditi.

    Vrijeme izvravanja: Mogue je da proces mijenja svoje adrese i tokom izvravanja,odnosno prebacuje se iz jednog u drugo memorijsko podruje. Za realizaciju ovakvognaina rada mora biti dostupan poseban hardver.

    objektnimodul

    modul za

    uitavanje( )load module

    ostaliobjektnimoduli

    sistemskabiblioteka

    dinamikasistemskabiblioteka

    povezivanje

    uitavanje

    memorijskibinarni

    oblikprograma

    (linkage)editor

    (loader)

    izvorniprogram( )source

    programprevodilac

    ()

    compiler,assembler

    vrijemeuitavanja

    vrijemeprevoenja

    vrijemeizvravanja

  • 7/21/2019 Upravljanje Memorijom

    6/19

    Logiki i fiziki adresni prostor

    Adrese koje generie CPU, dakle nakon prevoenja i povezivanja, obino se oznaavaju kaologike adrese. S druge strane, adresa koju vidi memorijska jedinica, dakle adresa koja seuitava u memorijski adresni registar, naziva sefizika adresa.

    Pri koritenju metoda adresnog povezivanja u vrijeme prevoenja ili uitavanja, logike ifizike adrese su jednake, dok u vrijeme izvravanja one nisu iste. U tom sluaju logikeadrese obino se nazivaju virtualneadrese. Naravno, skup svih logikih adresa koje generieprogram (dakle, prije uitavanja u memoriju) naziva se logiki adresni prostor, a skup svihfizikih adresa koje odgovaraju logikim (nakon uitavanja u memoriju) je fiziki adresni

    prostor. Zato su kod adresnog povezivanja u vrijeme izvravanja logiki i fiziki adresniprostori razliiti.

    U vrijeme izvravanja, preslikavanje(mapiranje) iz logikog u fiziki adresni

    prostor vri poseban hardver za upravljanjememorijom (memory management unit

    MMU). Danas se koriste brojna rjeenja ovefunkcije. Ovdje e biti prikazanopreslikavanje pomou jednostavne MMUeme koja je uopavanje ve predstavljeneeme baznog registra. U ovom se sluajubazni registar naziva relokacijski registar.Vrijednost koja je u njemu pohranjena se

    dodaje svakoj adresi koju generie korisniki proces u vrijeme slanja adrese memoriji (slikalijevo). Na primjer, ako je ta vrijednost 14000, onda pokuaj korisnika da adresira lokaciju 0se dinamiki relocira na lokaciju 14000, a pristup lokaciji 346 se preslikava na lokaciju14346.

    Korisniki program nikad ne vidi stvarnu fiziku adresu. On moe kreirati pokaziva nalokaciju npr. 346, pohraniti ga u memoriji, sa njim manipulisati, uporeivati ga sa ostalimadresama, pri emu koristi njegovu vrijednost 346. Jedino u sluaju kada ga koristi kaomemorijsku adresu relocira se s obzirom na bazni registar. Korisniki program radi salogikim adresama. Hardver za memorijsko preslikavanje pretvara logike adrese u fizike.Konana memorijska adresa se odreuje u trenutku slanja zahtjeva za njom. Konceptpreslikavanja logikog u fiziki adresni prostor osnova je za efikasno upravljanje memorijom.

    Preklapanje (overlay)

    Dosada se pretpostavljalo da se cijeli program koji se izvodi nalazi u radnoj memoriji. Time jemaksimalna dozvoljena veliina programa odreena veliinom radne memorije to predstavljaozbiljno ogranienje. Mogue rjeenje problema je da se u radnoj memoriji dri samo dioprograma i podataka koji su trenutno potrebni. Kada su potrebni sljedei podaci kao i programtada se iz memorije izbacuje prethodni dio programa i podataka, a novi se upisuju s diska.Ova tehnika naziva se preklapanje (overlay). Ne zahtijeva posebnu podrku operativnogsistema. Njegova primjena mogua je primjenom fajl sistema. Meutim, postavljaju se

    dodatni zahtjevi pred programera. On mora znati kako ovaj sistem funkcionira kako bi stvorioposebne module.

  • 7/21/2019 Upravljanje Memorijom

    7/19

    Dinamiko uitavanje

    U sluaju da itav program i svi podaci budu u fizikoj memoriji, veliina procesa ogranienaje veliinom memorije. Bolje koritenje memorijskog prostora postie se dinamikimuitavanjem (dinamic loading). Kod ovog tipa uitavanja potprogrami ili rutine smjetene su

    na disku, a uitavaju se u memoriju tek nakon to ih glavni program pozove. Kod pozivapotprograma, prvo se provjerava da li je potprogram u radnoj memoriji, a ako nije poziva seprogram za dinamiko uitavanje i povezivanje (relocatable linkage editor) koji uitavapotprogram u memoriju, te vri auriranje tabele programskih adresa. Potom se kontrolaprosljeuje na tek uitani potprogram.

    Prednost dinamikog uitavanja je to potprogrami ili procedure koje se nikad ne koristi ovimpristupom nikad nee biti uitane u memoriju. Ovaj pristup je posebno efikasan kada se velikidio programskog koda veoma rijetko koristi. To je sluaj, na primjer, kod procedura zaotkrivanje i otklanjanje pogreaka, koje se rijetko dogaaju. To znai da iako je itav programznaajno velik, veoma mali njegov dio se koristi.

    Dinamiko uitavanje ne zahtijeva posebnu podrku operativnog sistema. Programer jedinomora poznavati princip rada kako bi svoj program prilagodio ovom sistemu i iskoristio svenjegove prednosti. Pomo koju operativni sistem moe pruiti programeru ogleda seobezbjeivanju biblioteke rutina za sprovoenje dinamikog uitavanja.

    Dinamiko povezivanje

    Na slici 5. prikazana je i dinamika sistemska biblioteka koja sadri programe koji sedinamiki mogu povezivati s programom koji se izvodi (dynamically linked libraries). Postojeoperativni sistemi koji podravaju samo statiko povezivanje (static linking). Kod njih sesistemske biblioteke tretiraju identino ostalim objektnim modulima koji se povezuju u

    jedinstven program kojeg programski punja (loader) uitava u radnu memoriju. Konceptdinamikog povezivanja slian je konceptu dinamikog uitavanja. Povezivanje se odgaa svedo izvrenja. Ovo svojstvo se obino koristi sa sistemskim bibliotekama. Prednost ovogpristupa u odnosu na dinamiko uitavanje je u boljoj iskoristivosti radne memorije i diska jernije potrebno da svaki program ima sve procedure, odnosno da vie programa upisanih uradnu memoriju, a koji koriste istu proceduru, imaju njenu kopiju.

    Kod dinamikog povezivanja koristi se mali segment koda (opuak engl. stub) koji pokazuje

    na sistemsku proceduru koju program koristi. Ova procedura moe biti stalno upisana umemoriji (resident) ili je potrebno uitati s diska. Izvravanjem stub-a prvo se provjerava da lije procedura veprisutna u memoriji ili je potrebno uitati s diska u memoriju. Nakon to jepozvana procedura pronaena ili uitana u memoriju, stub se zamjenjuje adresom pozvaneprocedure, te se procedura izvodi. Sljedei put kada se ista procedura pozove ona seautomatski izvodi bez izvoenja stub-a, odnosno bez dodatnog vremena potrebnog zadinamiko povezivanje. Prema opisanom postupku, bez obzira koliko programa koristi istuproceduru iz sistemske biblioteke u memoriji je samo jedna njena kopija.

    Za razliku od dinamikog uitavanja, dinamiko povezivanje u opem sluaju zahtijevauslugu operativnog sistema. Ako sistem izvodi istovremeno, konkurentno, vie programa oni

    moraju meusobno biti zatieni od (ne)namjernih greaka. Tada je operativni sistem jedini

  • 7/21/2019 Upravljanje Memorijom

    8/19

    koji moe ili provjeriti da li je procedura, koju treba jedan proces, u memorijskom prostorudrugog, ili moe dozvoliti razliitim procesima pristup istim memorijskim adresama.

    Prebacivanje (swapping)

    Proces se moe izvoditi samo ako se nalazi u radnoj memoriji. U vieprogramskoj sredini ijaje tendencija da efikasno iskoristi resurse, vie procesa mogue je konkurentno izvravati takoda se proces koji se izvrava uita u memoriju, a kada se prekida s njegovim izvravanjem onse zamijeni s drugim procesom s diska. Npr. ako procesu istekne dodijeljeno CPU-vrijeme,onda se prebacuje na disk. Na taj nain se oslobaa radna memorija, a u memoriju se upisuje

    jedan od procesa iz reda spremnih to zavisi od primijenjenog algoritma rasporeivanja (donjaslika).

    prostoroperativnog

    sistema

    korisnikiprostor

    proces P

    proces P

    1

    2

    upisan

    disk

    radna memorija

    izbaen

    Dodjela memorije prebacivanjem jednostavno se sprovodi. Nedostatak je to je vrijemepotrebno za izmjenu konteksta (context-switch) relativno veliko. Prebacivanje procesazamiljeno je s ciljem poveanja iskoristivosti sistema. Ali ukoliko je vrijeme prebacivanja

    reda veliine vremena obrade pojedinog procesa, tada je ovakav pristup neprihvatljiv.

    Dodatni problem je to proces da bi bio izbaen iz radne memorije mora biti potpunoneaktivan. Naime, ukoliko je proces zahtijevao U/I operaciju, a zatim je izbaen iz memorije,podaci koji se prosljeuju ili dolaze s U/I ureaja prepisani su odnosno pripadaju drugomprocesu. Zato je potrebno da proces obavi U/I operaciju, pa tek onda da bude prebaen. Time

    je dodatno naruen koncept vieprocesnog rada.

    Kao posljedica navedenih nedostataka ovakav pristup praktiki danas ne koristi. Meutim,posluio je kao osnova modernim algoritmima za dodjelu i upravljanje radnom memorijom.

    Kontinuirana dodjela memorije, dodjela po particijama

    U glavnu memoriju moraju se smjestiti i operativni sistem i razliiti korisniki procesi. Zatose dodjeljivanje (alociranje) memorije mora vriti na to efikasniji nain. Memorija se obinodijeli na dva dijela (particije), jedan koji koristi operativni sistem, a drugi kojeg koristekorisniki procesi. Operativni sistem moe se nalaziti ili na memorijskim lokacijama snajniim ili najviim adresama to zavisi od hardvera. Meutim, bez obzira na poloajoperativnog sistema, tenja je da vie razliitih korisnikih procesa bude smjeteno u radnojmemoriji. Zato je potrebno razmatrati naine alociranja memorije procesima koji ekaju uulaznom redu. Kod kontinuirane alokacije memorije svaki proces je smjeten unutar jednog

    od zasebnih memorijskih segmenata.

  • 7/21/2019 Upravljanje Memorijom

    9/19

    Sistemi sa vie particija

    Kod sistema s jednom particijom, ukoliko se primijeni vieprocesni rad, potrebno je prilikompromjene konteksta izbacivati prekinuti proces na disk i upisati drugi u radnu memoriju(swapping). Kako je ve reeno ovakav pristup zahtijeva neprihvatljivo mnogo vremena na

    izmjenu konteksta. Razvoj hardvera, odnosno znaajno poveanje kapaciteta glavnememorije, omoguio je podjelu memorije na vie dijelova, particija. Svaka particija moesadravati samo tano jedan korisniki proces. Zato je stepen multiprogramiranja ogranienbrojem particija. Kada se, primjenom ove metode, oslobodi jedna memorijska particija,izabrani program iz ulaznog reda se uitava u nju i postaje proces koji eka na koritenjeprocesora, odnosno eka na izvravanje. Po zavretku obrade proces se izbacuje iz memorije islobodna particija se dodjeljuje sljedeem procesu koji eka na disku.

    Broj particija moe biti konstantan ili promjenjiv. U prvobitnim verzijama primjene ovemetode, koristio se konstantan broj particija. Svaka particija imala je svoj vlastiti red ekanjana disku (long term scheduler), (donja slika). Procesi su se pripremali za odreenu particiju u

    zavisnosti od njegovih memorijskih zahtjeva. Zahtjev za memorijom je odreivao korisnik ilise proraunavalo automatski. U vrijeme kad je ova metoda koritena, u upotrebi su bili tzv.statiki programski jezici koji nisu mogli zahtijevati dodatnu memoriju tokom izvravanja(FORTRAN).

    Procesi su se pripremali za odreenu particiju, inisu se mogli izvoditi u drugim particijama, jer jeprogramski punja odreivao fizike adrese. Zatose ovakav nain dodjele memorije naziva statikaalokacija memorije.

    Ovakva alokacija memorije koristila se kod IBM360 i poznata je pod nazivom MFT(Multiprogramming with Fixed number of Tasks).Kod nje svaka particija ima svoj red ekanja.Ovakav pristup dodjele memorije nije vie uuporabi, a primarno se koristio kod operativnih

    sistema sa grupnom obradom. Bila je potrebna i dodatna zatita kako se korisnici ne bimeusobno ugroavali i da ne bi ugroavali operativni sistem.

    Nedostatak ovog rjeenja je to bi neke particije bile prazne dok bi za druge postojali velikiredovi ekanja. Ovo je naroito bio sluaj kada bi operater pogreno procijenio veliine

    particija. Tako

    er, ukoliko je program bio toliki da nije mogao stati ni u jednu particiju, madasistem posjeduje dovoljno radne memorije za taj program, morao se podnositi poseban zahtjevoperateru kako bi se mogao izvesti navedeni program.

    Upravljanje memorijom s promjenjivim brojem particija, odnosno dinamiko dijeljenje naparticije, omoguava prevazilaenje tekoa koje se javljaju kod dijeljenja na fiksne particije.Kod dinamikog dijeljenja memorije, particije su promjenljive duine i broja. Operativnisistem vodi evidenciju o zauzetim i slobodnim particijama. U poetku se cijeli korisnikimemorijski prostor tretira kao jedna particija. Prvi proces koji ulazi u memoriju iz ulaznogreda dobija onoliko memorijskog prostora koliko mu je potrebno, te taj prostor operativnisistem oznaava kao zauzet. Ulaskom sljedeeg procesa operativni sistem ispituje da li je

    raspoloivi slobodni prostor dovoljan za ovaj proces. Ako jeste, njemu dodjeljuje prostorodmah iza prvog procesa. Ovaj postupak se nastavlja dok se mogu zadovoljiti zahtjevi

    operativnisistem

    2k particija

    6k particija

    12k particija

    24k particija

    2k2k2k 2k 1k1k

    3k6k

    10k 7k

    16k

    5k

  • 7/21/2019 Upravljanje Memorijom

    10/19

    red procesaprihvaenih na obradu

    procesmemorijski

    zahtjevitrajanje

    P

    P

    P

    P

    P

    1

    2

    3

    4

    5

    600k

    1000k

    300k

    700k

    500k

    10

    5

    20

    8

    15

    operativnisistem

    0

    400k

    2560k

    2160k

    radna memorija

    procesa iz ulaznog reda. Kada u meuvremenu neki od procesa zavri, oslobaa se memorijakoju je on zauzimao i ona se moe dodijeliti drugom procesu.

    Princip rada, kao i problemi koji se javljaju kod dinamikog particioniranja pojasnie se nasljedeem primjeru. Neka sistem ima na raspolaganju 2560k memorije od koje operativni

    sistem koristi 400k. Znai, korisnik na raspolaganju ima 2160k memorije. Neka se razmatrajuprocesi P1 P5 ija su vremena trajanja kao imemorijski zahtjevi dati tabelom. Za dodjeluprocesora neka se koristi RR algoritam a vrijemeizvravanja je 1. U memoriju e se prvo uitatiproces P1 i zapoee njegovo izvravanje. U tomtrenutku zauzeto je 1000k memorije, a slobodno1560k. Dok se izvrava procesa P1 uitae se u

    slobodnu memoriju i proces P2 iji su memorijski zahtjevi manji odslobodnih kapaciteta. Nakon uitavanja P2 zauzeto je 2000k memorije, a slobodno 560k.Slobodan prostor dovoljan je da se uita proces P3 nakon ega ostaje slobodno svega 260k

    memorije to nije dovoljno za uitavanje ostalih procesi (stubac a na donjoj slici). Procesiuitani u memoriju, P1-P3izvravae se naizmjenino, aprvi e zavriti P2(14 vr. jed.)i oslobodie zauzetumemoriju (b). Na slobodnomjesto uitae se P4 (c).Nakon 28 vr. jed. zavrie P1iosloboditi zauzetu memoriju(d). Na slobodno mjestouitae se proces P5(e).

    Rezime primjera: proces prihvaen na obradu uitava se u memoriju kada je u memorijislobodan segment (particija) vei od njegovog memorijskog zahtjeva, procesi uitani umemoriju konkurentno se izvravaju, kada program zavri s izvravanjem oslobaa zauzetumemoriju.

    Znai da su kod dinamike dodjele particija privilegovani manji programi. Naime, svremenom u memoriji se nalazi vei broj manjih procesa koji su neravnomjerno rasporeeni,a takoer i vei broj slobodnih mjesta manjeg kapaciteta, tzv. upljina. Ove upljine sutakoer razbacane po memoriji. Vei programi se ne mogu uitati u memoriju jer ne postoji

    dovoljno velik kontinuirani slobodni prostor iako je ukupna slobodna memorija dovoljna.Ovaj problem naziva se spoljanja fragmentacija memorijekoja je sluaj opeg problemadinamike alokacije memorije. Naime, neka postoji vie (n) slobodnih segmenata u koji semoe uitati sljedei proces. Koji od njih odabrati?

    Mogua su sljedea rjeenja: Prvi koji zadovoljava (first-fit): Procesu se dodjeljuje prvi segment koji zadovoljava

    postavljene memorijske zahtjeve. Obino pretraivanje poinje od poetka listeslobodnih segmenata ili se nastavlja od mjesta gdje je prethodno ispitivanjezaustavljeno. U ovom drugom sluaju zove se sljedei koji zadovoljava (next-fit).

    Najbolje poklapanje (best-fit): Procesu se dodjeljuje onaj segment koji nabolje

    odgovara njegovim memorijskim zahtjevima. Iako na prvi pogled ovim pristupom se

    operativnisistem

    operativnisistem

    operativnisistem

    operativnisistem

    operativnisistem

    400k 400k 400k 400k

    900k1000k 1000k

    1700k 1700k 1700k

    1000k1000k

    2000k 2000k 2000k 2000k 2000k

    2300k 2300k 2300k 2300k 2300k

    2560k 2560k 2560k 2560k 2560k

    P P P P1 1 1 5

    P

    P P

    P P

    P P P

    2

    2 4

    1 5

    4 4 4

    P P P P P3 3 3 3 3

    zavrio ulazi

    zavrio ulazi

    1000k

    400k

    a b c d e

  • 7/21/2019 Upravljanje Memorijom

    11/19

    najbolje iskoritava slobodna memorija, rezultat je stvaranje malih upljina, koji suposljedica razlike veliine segmenta i programa.

    Najloije poklapanje (worst-fit): Procesu se dodjeljuje najvei slobodni segment. Ovajalgoritam ima za cilj stvaranje to veih upljina, suprotno prethodnom algoritmu.

    Provedene simulacije pokazale su da su prva dva algoritma bolja od posljednjeg u smislu

    bolje iskoristivosti memorije. Kad je u pitanju iskoristivost memorije ne moe se rei koji jeod ova prva dva bolji, ali je first-fit generalno bri.

    Meutim, kod fragmentacije se moe pojaviti jo jedan problem. U sluaju da se procesudodijeli slobodan memorijski prostor koji je vei od njegovih zahtjeva, pitanje je da linovonastala upljina treba da bude na vrhu ili dnu stare.

    Zakljuak: u toku rada, operativni sistem posjeduje listu slobodnih memorijskih blokova iulazni red. Operativni sistem aurira ulazni red prema odreenom algoritmu ureivanja.Memorija se dodjeljuje procesima do trenutka kada nema vie dovoljno velikog memorijskogbloka koji moe zadovoljiti memorijske potrebe sljedeeg procesa. U tom sluaju, operativni

    sistem moe da eka dok ne bude raspoloiva dovoljno velika upljina za taj proces, ili moeu ulaznom redu provjeriti da li mogu biti zadovoljeni memorijski zahtjevi nekog drugogmanjeg procesa. U opem sluaju, raspoloivi slobodni memorijski blokovi ine skup upljinarazliite veliine koje su razbacane po memoriji. Kada proces zatrai memorijske resurse,sistem pretrauje skup upljina u potrazi za dovoljno velikom za dati proces. Ako je upljinavea od potreba, dijeli se na dva dijela: jedan dio se alocira procesu, a drugi se vraa u skupraspoloivih upljina. Kad se proces izvri, on oslobaa svoj memorijski blok, koji se vraa uskup. Ako je ta nova upljina susjedna vepostojeoj upljini u skupu, one se spajaju u jednuveu. U tom trenutku, sistem moe provjeriti da li postoje novi zahtjevi za memorijom i da lita nova upljina moe zadovoljiti zahtjeve ijednog procesa iz ulaznog reda.

    Fragmentacija

    Kao to je veopisano, dok se procesi uitavaju i izbacuju iz memorije slobodna memorijarazbija se u manje segmente. Tako, s vremenom iako je ukupna veliina slobodne memorijedovoljna da prihvati nove procese to nije mogue iz razloga to ne postoje dovoljno velikakontinuirana podruja. Reeno je da se ova pojava naziva spoljanja ili vanjskafragmentacija memorije. Prema primjeru na gornjoj slici, stubac a, ukupna spoljanjafragmentacija iznosi 260k i odnosi se na samo jednu upljinu. Na stupcu c ukupna vanjskafragmentacija iznosi 560k (300k+260k). Kada bi se radilo o kontinuiranom segmentu ova

    upljina bi bila dovoljna za uitavanje procesa P5

    iji su memorijski zahtjevi 500k.

    Fragmentacija moe postati ozbiljan problem koji znaajno umanjuje efikasnost sistema. Unajgorem sluaju mogue je da se izmeu svih procesa nalazi upljina, koja bi, kada bi sespojila u jedinstvenu cjelinu, bila dovoljna za obradu nekoliko dodatnih procesa. Algoritam zaodabir slobodne particije (first-fit, best-fit, worst-fit) znaajno utie na stepen fragmentacije.Statistike analize za algoritam first-fit pokazuju da ukoliko je dodijeljeno N memorijskihblokova, prosjeno je 0.5N blokova neiskoriteno kao posljedica fragmentacije. To znai da

    je sa stanovita memorije prosjeno njena jedna treina neupotrebljiva. Ovo svojstvo poznatoje pod nazivom 50% pravilo.

    Kod dodjele memorije sa fiksnim particijama susree se i sljedei problem: neka postojislobodan memorijski blok veliine 18,464k, a program zahtijeva 18,460k. Tada je razumno

  • 7/21/2019 Upravljanje Memorijom

    12/19

    dodijeliti programu cijeli blok, bez obzira to e 4k ostati neiskoriteno. Ovo je bolje nego data 4k ine upljinu za koju operativni sistem voditi evidenciju koja iziskuje mnogo viememorije nego to veliina upljine. U ovom sluaju dodijeljena memorija je neto vea odmemorijskih zahtjeva procesa. Razlika u zahtjevanoj i dodijeljenoj memoriji naziva seunutranja fragmentacija, jer se nalazi unutar particije.

    Jedan od naina rjeavanja problema vanjske fragmentacije je premjetanje procesa i spajanjeslobodnih blokova u jedan kontinuirani blok (compaction). Tako u primjeru stupca e nagornjoj slici, spajanje se moe izvesti premjetanjem procesa P3i P4(donja slika).

    Meutim, ukoliko su apsolutne, odnosno fizike adreseovih procesa generisane za vrijeme pripreme programaza izvravanje ili za vrijeme uitavanja, spajanje nijemogue provesti. Realizacija spajanja mogua je jedinoukoliko se fizike adrese generiu dinamiki, odnosnoza vrijeme izvravanja programa.

    S druge strane, spajanje slobodnih memorijskih blokovapremjetanjem svih procesa prema jednom krajumemorije moe se izvriti, ali za nedopustivo velikovrijeme. Zato je potrebno paljivo odabrati nainspajanja slobodnih blokova (primjer na donjoj slici). Ukoliko se svi procesi pomiu premaredoslijedu dodjeljivanja memorije (P1, P2, P3, ...), onda je potrebno premjestiti 600k koda ipodataka (stubac b). U sljedeem sluaju (stubac c) moe se zakljuiti da je potrebno prebaciti

    samo proces P4 da bi se dobila istasituacija. Tada je premjeteno samo400k. Detaljnijim ispitivanjem moe seuoiti da je dovoljno premjestiti procesP3 na vrh (dno) memorijskog prostora(stubac d). U tom sluaju premjeta sesamo 200k. Primjer pokazuje sloenostodabira optimalne strategije spajanjaslobodnih memorijskih blokova.

    Stranienje (paging)

    Dijeljenje na particije fiksne i promjenljive veliine je neefikasno u pogledu iskoritenjamemorije, jer fiksno particioniranje rezultira unutranjom, a dinamiko vanjskomfragmentacijom. Mogue rjeenje problema fragmentacije je da se dozvoli da proces ne morabiti upisan u kontinuirani memorijski blok. Program moe biti raspren proizvoljno pomemoriji. U tom sluaju, radna memorija dijeli se na manje blokove fiksne veliine koji senazivaju okviri (frames). Logiki adresni prostor programa takoer se podjeli na blokove isteveliine koji se nazivaju stranice (pages). Kada se program upie u memoriju, stranice seupisuju u slobodne memorijske okvire. Radi jednostavnosti prebacivanja programa s diska uradnu memoriju i disk je podijeljen na okvire jednake veliine kao i okviri memorije. Tako se

    jedan okvir s diska upisuje u jedan okvir radne memorije.

  • 7/21/2019 Upravljanje Memorijom

    13/19

    Lijeva slika prikazuje upotrebu stranica iokvira. U datom trenutku, neki od okvirau memoriji su zauzeti, a neki suslobodni. Operativni sistem odrava listuslobodnih okvira. Proces A koji se uva

    na disku sastoji se od etiri stranice.Kada doe vrijeme da se uita taj proces,operativni sistem nalazi etiri slobodnaokvira i uitava etiri stranice procesa Au ta etiri okvira (b). Zatim se uitavajuproces B (c), koji se sastoji od tri stranicei proces C, koji se sastoji od etiristranice (d). Nakon toga se proces Bsuspenduje i zamenjuje (swap out) izglavne memorije (e). Poslije suspenzijeprocesa B operativni sistem uitava novi

    proces D, koji se sastoji od pet stranica.Pretpostavimo da ne postoji dovoljnoneupotrebljenih uzastopnih okvira u kojebi se mogao uitati proces. Meutim, tone spreava operativni sistem da ga uita(f).

    Adresa koju generira procesor dijeli sena dva dijela: broj stranice (page number) p i pomak unutar stranice (page offset) d. Brojstranice je indeks (pokaziva, referenca) reda u tablici stranica. U tablici stranica upisane suosnovne adrese svake stranice u fizikoj memoriji. Kombinacija osnovne adrese i pomakaodreuje fiziku adresu memorijske lokacije kojoj se pristupa. Hardver koji podravastranienje prikazan je na donjoj slici. On definie veliinu okvira i stranice. Veliina stranice

    obino je stepen broja 2, i kree se od512B do 16MB to zavisi od arhitektureraunara. Izbor stepena broja 2 za veliinustranice, ini prelaz iz logike adrese u brojstranice i pomak unutar stranice veomalakim. Ako je veliina logikog adresnogprostora 2m i veliina stranice 2n adresnih

    jedinica, onda prvih m-n bita odreuje broj

    stranice, a ostalih n bita odreuje pomakunutar stranice:

    Model dodjele memorije po stranicama prikazan je donjom slikom.

    stranica 0 stranica 0

    stranica 2

    stranica 1

    stranica 3

    stranica 2

    stranica 1

    stranica 3

    logikamemorija

    1

    4

    3

    7

    tablicastranica

    0

    1

    2

    3

    0

    1

    2

    3

    4

    5

    6

    7

    brojokvira

    fizi kamemorija

  • 7/21/2019 Upravljanje Memorijom

    14/19

    slika lijevo prikazuje kako se korisniki pogled namemoriju preslikava u fiziku memoriju: neka jeveliina stranice 4 bajta, a fizika memorija 32bajta (8 okvira). Logika adresa 0 je unutar stranice0, a pomak joj je 0. Indeksiranjem u tabeli stranica,

    vidi se da stranici 0 odgovara okvir 5. Zato selogika adresa 0 (slovo a) preslikava u fizikuadresu [(5x4)+0]=20, logika adresa 3 (slovo d)(stranica 0, pomak 3) preslikava u fiziku adresu[(5x4)+3]=23, logika adresa 4 (slovo e) (stranica1, pomak 0) se mapira u fiziku adresu[(6x4)+0]=24, te logika adresa 13 (slovo n)(stranica 3, pomak 1) se mapira u fiziku adresu[(2x4)+1]=9. Iz ovog primjera se jasno vidi da jestranienje oblik je dinamike dodjele memorijekod koje hardver vezuje svaku logiku adresu za

    odreenu fiziku adresu.

    Primjenom stranienja nestaje efekt vanjske fragmentacije. Svaki okvir moe biti dodijeljenprocesu koji ga treba. Naravno, postoji problem unutranje fragmentacije jer se okviridodjeljuju kao cjeline. Tako se deava da je posljednji okvir nepopunjen. Npr. ukoliko sustranice veliine 2048B, a proces zahtijeva 72,766B, njemu e se dodijeliti 36 okvira od kojihe 35 biti potpuno popunjeno, a u posljednjem e se nalaziti 1086B. Rezultat je unutranjafragmentacija posljednjeg okvira od 2048 1086 = 962B. U najgorem sluaju unutranjafragmentacija iznosi veliina okvira 1B, odnosno skoro itav jedan okvir. Sa stajalitaunutarnje fragmentacije povoljnije je da su okviri manje veliine. Meutim, s druge strane akosu stranice manje, raste tabela stranica, pa se mora nai balans izmeu ove dvije suprotnepojave. Ako veliina procesa ne zavisi od veliine stranice, oekuje se prosjena unutranjafragmentacija koja iznosi pola veliine stranice po procesu. Danas se obino koriste straniceveliine izmeu 4KB i 8KB, a kod nekih sistema ak i vee. Neki procesori podravajustranice razliitih veliina. Trenutno se razvija podrka za odreivanje veliine stranice uletu.

    Sistem stranienja djeluje na sljedei nain: Kad se program prihvati za izvravanje izraunase njegova veliina koja se izraava potrebnim brojem stranica. Ukoliko je slobodan dovoljanbroj okvira proces se upisuje u memoriju stranicu po stranicu. Istovremeno se za svakustranicu u tablici stranica upisuje i broj okvira u koji je ona upisana (donja slika).

    Kod stranienja vano je razlikovatikorisniko vienja memorije kojuprogram koristi i stvarne fizikememorije koja se koristi tokomnjegovog izvravanja. Korisnik jevidi kao kontinuirani prostor, dok sustvarni program i podaci razbacani pofizikoj memoriji. Razliku izmeukorisnikog vienja memorije istvarnog koritenja memorije pravi

    hardver za preslikavanje adresa.Preslikavanje logikog u fiziki

    stranica 0stranica 1

    stranica 2stranica 3

    novi procesi

    lista slobodnih

    okvira15

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    11

    12

    stranica 0stranica 1stranica 2

    stranica 3

    novi procesi

    lista slobodnihokvira

    1413

    182015

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    11

    12

    stranica 1

    stranica 0

    stranica 2

    stranica 314

    13

    18

    20

    0

    1

    2

    3

    tablica stranica

    a)memorije procesu

    slobodni okviri prije dodjele

    b) slobodni okviri poslijedodjele memorije procesu

  • 7/21/2019 Upravljanje Memorijom

    15/19

    adresni prostor je skriveno od korisnika, a kontrolie ga operativni sistem. Takoer, vano jeprimijetiti da korisniki program nije u mogunosti pristupati memorijskim lokacijama izvansvoje tablica stranica. Time je i realizirana zatita meu programima.

    Poto kod stranienja operativni sistem upravlja memorijom, on mora voditi evidenciju o

    stanju memorije: koji su okviri zauzeti, koji proces koristi pojedine okvire, koji su okvirislobodni. Ovi podaci obino se pohranjuje u tablici nazvanoj tablica okvira (frame table). Onaima red za svaki okvir koji pokazuje da li je okvir slobodan ili ne, i ako nije koji ga proces iliprocesi koriste.

    Korisniki proces izvodi se u korisnikom adresnom prostoru. Ukoliko proces izvodisistemski poziv (npr. U/I operaciju) i prosljeuje sistemskom pozivu adresu kao parametar,operativni sistem se mora pobrinuti da se adresa ispravno preslika kako bi se proslijedilaispravna fizika adresa. Operativni sistem odrava kopiju tablice stranica na isti nain kao toodrava kopiju programskog brojaa i sadraje bafera. Zato se kod stranienja poveavavrijeme izmjene konteksta.

    Segmentacija

    Korisniki program i njemu pridrueni podaci mogu da se podijele na odreeni brojsegmenata. Segmenti svih programa ne moraju da budu iste veliine, mada postojimaksimalna duina segmenta. Kao kod stranienja, logika adresa koja koristi segmentacijusastoji se od dva dijela, u ovom sluaju od broja segmenta i pomaka unutar tog segmenta.

    Zbog upotrebe segmenata razliitih veliina, segmentacija je slina dinamikoj podjeli naparticije. U odsustvu eme za preklapanje ili upotrebe virtuelne memorije, zahtijeva se da sesvi segmenti programa uitaju u memoriju radi izvravanja. Razlika u poreenju sadinamikim particioniranjem je u tome to kod segmentacije program moe da zauzme vieod jedne particije i te particije ne moraju da budu susjedne. Segmentacija rjeava problemunutranje fragmentacije, ali, kao i kod dinamike podjele na particije, ostaje problemvanjaske fragmentacije. Meutim, zbog toga to se proces dijeli na izvjestan broj manjihdijelova, vanjska fragmentacija je po pravilu manja. Za razliku od stranienja koje jenevidljivo za programera, segmentacija je obino vidljiva i pogodna za organizaciju programai podataka. Programer ili kompajler obino pridruuju programe i podatke razliitimsegmentima. U cilju modularnog programiranja, program ili podaci mogu dalje da se podijelena vie manjih segmenata. Loa strana ove tehnike je to to programer mora znati ogranienja

    maksimalne veliine segmenata. Sljede

    a pogodnost koritenja segmenata razli

    itih veli

    inaje to to ne postoji prosta veza izmeu logikih i fizikih adresa. Slino stranienju, tehnika

    jednostavne segmentacije koristi tabelu segmenata za svaki proces i listu slobodnih blokova uglavnoj memoriji. Svaki upis u tabelu segmenata daje poetnu adresu odgovarajuihsegmenata u glavnoj memoriji. Upis takoer treba da obezbijedi duinu segmenta da se ne bikoristile pogrene adrese. Kada proces ue u stanje izvravanja, adresa iz tabele segmenata seuitava u specijalan registar hardvera za upravljanje memorijom.

    Virtualna memorija

    Dosada su opisane razliite strategije upravljanja memorijom koje se susreu ili su sesusretale u komjuterskim sistemima. Sve navedene strategije imaju zajedniki cilj: imati u

  • 7/21/2019 Upravljanje Memorijom

    16/19

    memoriji to vei broj procesa kako bi se postigao to vei stepen multiprocesiranja. Takoer,imaju jedinstven zahtjev da cijeli program koji se izvodi mora biti u radnoj memoriji.

    Kod tehnike virtualne memorije sve su adrese logike reference, koje se tokom izvravanjaprevode u realne. To omoguuje da proces moe biti bilo gdje u glavnoj memoriji, i

    mijenjanje njegove lokacije tokom vremena. Virtualna memorija dozvoljava procesu da budepodijeljen na manje dijelove. Tokom izvravanja ne zahtijeva se da dijelovi budu susjedni uglavnoj memoriji, niti da svi budu u glavnoj memoriji. Dvije osnovne tehnike virtualnememorije su stranienje i segmentacija. Kod jednostavnijih ema upravljanja memorijommogua je i njihova kombinacija. Virtualna memorija zahtijeva i hardversku i softverskupodrku. Hardversku podrku obezbjeuje procesor, a podrazumijeva dinamiko prevoenjevirtualnih adresa u fizike i generisanje prekida kada referencirana stranica ili segment nisu umemoriji. Prekid zatim poziva softver za upravljanje memorijom, koji je dio operativnogsistema.

    Dakle, virtualna memorija je strategija dodjele memorije koja dozvoljava da samo dio

    programa koji se izvodi bude u radnoj memoriji. Osnovna prednost ovakvog pristupa je daprogram moe biti i vei od radne memorije. Tako korisniki program moe poprimitiproizvoljnu veliinu, a sistem za upravljanje memorijom preslikava logiki prostor korisnikau ogranieni prostor u radnoj memoriji. Ovakav sistem za upravljanje memorijom nije

    jednostavno realizirati. Loa implementacija ovakvog sistema moe znaajno smanjitiperformanse cijelog kompjuterskog sistema.

    Prethodno opisani algoritmi potrebni su kada instrukcije koje se izvode moraju biti u glavnojmemoriji. Najjednostavnije je da se cijeli program upie u glavnu memoriju. Prebacivanje(swapping) i dinamiko uitavanje rjeavaju posljednje ogranienje, ali zahtijevaju dodatnemjere od strane programera. Meutim, analize programa ukazuju da obino nije potrebancijeli program da bi se potrebna obrada izvela. Tako npr.:

    Programi sadre procedure za obradu sluajnih ili namjernih greaka. Poto se takvisluajevi relativno rijetko deavaju, program izvri potrebnu obradu bez pozivaspomenutih procedura.

    Program za polja, liste, tabele, i sline statike strukture obino rezervira viememorije nego je stvarno potrebno.

    Pojedine opcije programa relativno se rijetko koriste. Tako npr. pravnici kad piu tekstu Word-u vjerojatno nikad nee koristiti Equation editor.

    injenica je da cijeli program nije istovremeno potreban. Ova osobina, da samo dio programa

    koji se izvodi bude u memoriji ima niz prednosti: Veliina programa nije ograniena veliinom radne memorije. Programer moe pisati

    program kao da sistem raspolae s neogranienom memorijom, odnosno programerraspolae s neogranienim virtualnim logikim adresnim prostorom, to znaajnopomae kod pisanja programa.

    Korisniki program moe se izvoditi sa znatno manjom dodijeljenom fizikommemorijom, to omoguava vei stepen vieprogramskog rada. Na taj se nainpoveava CPU iskoritenje i propusna mosistema, ali se ne poveava vrijeme odzivakao ni ukupno vrijeme.

    Manje U/I operacija potrebno je za prebacivanje korisnikih programa iz i u memoriju.Tako se korisniki programi bre izvode.

  • 7/21/2019 Upravljanje Memorijom

    17/19

    Zakljuak je da izvoenje programa koji nisu cijeli upisani u memoriji ima brojne prednosti ikako za korisnika tako i za kompjuterski sistem.

    Virtualna memorija je razdvajanjelogikog adresnog prostora koji vidi

    korisnik od fizikog adresnog prostora ukojem se program izvodi. Ovorazdvajanje omoguava programeru daraspolae s neogranienim logikimprostorom iako se program stvarno izvodiu relativno malom fizikom adresnomprostoru. Virtualna memorija olakavaposao programeru, ne samo to raspolaes neogranienim logikim prostorom,nego to ne treba da vodi rauna o strukturi programa koju je zahtijevao sistem u sluajuprebacivanja ili dinamikog uitavanja. Princip virtualne memorije prikazan je na slici desno.

    Virtualna memorija obino se realizira kao stranienje na zahtjev (demand paging). Meutim,valja napomenuti da to nije i jedina strategija virtualne memorije.

    Stranienje na zahtjev (demand paging)

    Stranienje na zahtjev koristi koncept slian sistemu stranica sa prebacivanjem (donja slika).Proces je pohranjen na sekundarnojmemoriji, obino disku. Kada se namjerava

    izvriti proces uitava se samo jedan njegovdio u radnu memoriju. Kod uitavanjaprocesa u memoriju uobiajeno se koristitzv. lijeni prebaciva (lazy swapper) kojiupisuje stranicu u memoriju tek kada je onapotrebna. Termin swapper je tehnikinetaan jer se on obino odnosi naprebacivanje cijelog procesa. Ispravnije jekoritenje termina pager koji se odnosi naprebacivanje stranice. Zato se kodstranienja na zahtjev koristi termin pager, ane swapper.

    Za stranienje na zahtjev neophodna jehardverska podrka. Potrebno je razlikovati stranice koje su uitane u memoriju od stranicakoje se nalaze samo na disku. Ovaj problem rjeava se proirenjem tablice stranica bitomprisutnosti koji daje informaciju da li se stranica nalazi u radnoj memoriji ili ne (donja slika).

    Kada se pristupa pojedinoj stranici, operativni sistem preko tablice stranica ispituje da li jeadresirana stranica u memoriji ili ne. Ako je stranica uitana u fiziku memoriju, bit prisustva

    je postavljen na 1, tada se izraunava fizika adresa instrukcije ili podatka i pristupa mu se.

    Ali ako adresirana stranica nije u memoriji tada je potrebno tu stranicu uitati u memoriju itek onda izvriti pristup.

  • 7/21/2019 Upravljanje Memorijom

    18/19

    stranica A

    stranica B

    stranica C

    stranica Dstranica E

    stranica F

    stranica G

    stranica H

    virtualnamemorija

    tablicastranica

    fizikamemorija

    sekundarnamemorija

    (disk)

    0

    1

    2

    34

    5

    6

    7

    01

    23

    45

    67

    1010

    0100

    4

    6

    9

    01

    234

    567

    8910

    11121314

    151617

    A

    C

    F AD

    G

    C

    F

    BE

    H

    bitprisustva

    Procedura pristupa stranici moe se opisati na sljedei nain (donja slika):

    hardver prvo provjerava bit prisustva adresirane stranice kako bi se odredilo da li jestranica u memoriji ili ne. Ukoliko stranica nije u memoriji (dolo je do tzv. promaaja) generira se prekid koji

    dojavljuje operativnom sistemu da treba pronai stranicu u sekundarnoj memoriji iprebaciti je u radnu memoriju. Obino promaaj rezultira prekidom prava koritenjaprocesora, te se proces prebacuje u red ekanja na U/I ureaj, a u ovom sluaju to jedisk.

    Operativni sistem pronalazi slobodan okvir u radnoj memoriji (operativni sistem vodilistu slobodnih okvira).

    Prebacuje se traena stranica u odabrani okvir. Osvjeava (aurira) se tablica stranica procesa na nain da se stranici pridruuje

    dodijeljeni okvir. Ovim je praktiki proces spreman da nastavi s izvravanjem. Prekinuta instrukcija se ponovo izvodi a stranici se pristupa kao da je ona oduvijek

    bila u memoriji.

    stranica D

    virtualnamemorija

    tablicastranica

    fizikamemorija

    sekundarnamemorija

    (disk)

    2

    3

    01234567

    10100100

    4

    6

    9

    0123456789

    1011121314

    A

    C

    F

    A

    DG

    CF

    B

    EH

    bitprisustva

    prekid

    1

    2

    6

    54

    3

    adresiranje

    operativnisistem

    stranica je na disku

    stranica uslobodan

    okvir

    obnovitablicu

    stranica

    ponovinaredbu

    U cijelom ovom procesu vano je primijetiti da se nakon prekida sauva stanje procesa(programski broja i ostali baferi ope namjene) te da se nakon unosa stranice u radnumemoriju i osvjeavanja tablice stranica proces moe nesmetano nastaviti. Jedina razlika je u

    tome to je sada adresirana stranica u radnoj memoriji.

  • 7/21/2019 Upravljanje Memorijom

    19/19

    Teoretski postoji vjerovatnoa da tokom izvravanja jedne instrukcije doe do viestrukihpromaaja. Naime, program se moe nalaziti u jednoj stranici, a podaci u drugoj. Ovakvesituacije, koje na sreu nisu este, dovele bi do znaajnog pada performansi sistema.

    Kao i kod stranienja, virtualna memorija zahtijeva znaajnu hardversku podrku kako bi se

    odrale dobre performanse sistema. Uz hardver potrebna je i dodatna programska podrka.Takoer, za primjenu stranienja na zahtjev potrebne su i odreene izmjene arhitektureraunara. Osnovni problem je potreba za ponavljanjem instrukcije ukoliko doe do promaaja.Do promaaja moe doi u bilo kojoj fazi izvravanja instrukcije. Ukoliko do promaaja doekod dohvata instrukcije jednostavno se nakon unosa stranice u memoriju ponavlja njen dohvatte nastavlja s njenim izvravanjem. Ali ukoliko doe do promaaja tokom dohvata operandatada je potrebno ponovo dohvatiti instrukciju, dekodirati je te dohvatiti operand koji je sada uradnoj memoriji.

    Neka se izvodi instrukcija koja sabire dvije memorijske varijable A i B i rezultat pohranjujena treu memorijsku lokaciju C. Instrukcija se izvodi kroz sljedee korake:

    1. dohvati i dekodiraj instrukciju,2. dohvati operand A,3. dohvati operand B4. saberi A i B,5. pohrani rezultat u C.

    Neka se rezultat C nalazi na lokaciji koja pripada stranici koja trenutno nije u memoriji.Promaaj tada rezultira procedurom unosa stranice u memoriju, te ponavljanja koraka 1-5.Program normalno nastavlja s izvravanjem, a ovakve situacije ako nisu uestale neeznaajno uticati na cjelokupne performanse sistema.

    Literatura:

    1. Andrew S. Tanenbaum, Modern Operating Systems 3rd Edition, Pearson EducationInc., 2008.

    2. Avi Silberschatz, Peter Baer, Galvin Greg Gagne, Operating System Concepts 8thEdition, 2009. godine, John Wiley & Sons, Inc., 111 River Street, Hoboken, NewJersey

    3. Ranko Popovi, Irina Branovi, Marko arac, Operativni sistemi I izdanje, 2011.godine, Univerzitet Singidunum, Danilova 32, Beograd

    4. Sven Gotovac, http://www2.fsr.ba/nastava/os, 2004-05.