You are on page 1of 5

Upravljanje memorijom - ciljevi upravljanja i

alokacija

1. Princip rada memorije


Memorija je, kao i procesor, funametalni deo racunarskih sistema.
Sastoji se iz niza memoriskih reci od kojih svaka ima jedinstvenu
adresu prilikom izvrsavanja procesa. Procesor na osnovu vrednosti
programskog brojaca cita instrukcije iz memorije.
Procitane instrukcije tokom izvrsenja dodatno mogu zahtevati citanje
operanada ili upisivanje podataka na druge memorijske lokacije. Sloj
upravljanja memoriju smesta se najblize jezgru.
2. Ciljevi upravljanja memorijom
Ciljevi koje treba postici na nivou sloja upravljanja memorijom su:
- alokacija memorije, odnosno dodela memorije procesima
- razdvajanje fizickog i logickog adresnog prostora programa i
vezivanje adresa
- logicka organizacija memorije, razdvajanje neizmenjivih segmenata od
segmenata sa promenljivim sadrzajem, odnosno podacima
3. Sta se postize razdvajanjem segmenata?
- nezavistan rad na segmentima koji cini program
- zastita segmenata
- deljenje segmenta izmedju veceg broja procesa
- relokacija
- podrska za dinamicko punjenje memorije programom i dinamicko
vezivanje
4. Objasni alokaciju memorije
Memorija se deli na dve particije:
- jedna je namenjena rezidentnom delu operativnog sistema
- druga je podeljena na delove i namenjena korisnickih procesima [user
space]. Obicno se u najnizem delu memorije nalazi najmanji deo. U
korisnickom adresnom prostoru nalazi se vise procesa koji formiraju
red cekanja na procesor pri cemu je neophodno da najpre dobiju
potrebnu memoriju.
5. Podela tehnika za dodelu memorije
- Kontinualna alokacija logickog i fizickog adresnog procesa sastoje
se iz kontinualnog niza memorijskih adresa, pri cemu memorijske
particije koje se dele procesima po velicini mogu biti ili razliciti
ili jednaki
- Diskontinualna alokacija obuhvata metode stranicenja, segmentacije i
stranicenje sa segmentacijom

LOGICKI I FIZICKI ADRESNI PROSTOR

1. Objasni proces izvrsavanja programa


Program se nalazi na disku kao izvrsna binarna datoteka. Program se sa
diska mora ucitati u memojriju, unutar adresnog prostora novo
kreiranog procesa. Zavisno od metode upravljanja memorijom, proces se
u toku izvrsavanja moze vise puta pomerati na relaciji disk-memorija.
Veci broj procesa deli operativnu memoriju racunara.
Zadatak OS je da prevede relativne, relokatibilne adrese u fiksne
prilikom ucitavanja programa u memoriju, odnosno da izvrsi vezivanje
adresa.

2. Kako se predstavljaju memorijske adrese pre samog izvrsenja


programa?
Prevodilac [compiler] prevodi izvorni kod programa i vezuje [bind]
simbolicke adrese iz izvornog koda za relativne, odnosno relokatibilne
adrese, koje punilac [loader] pretvara u apsolutne prilikom ucitavanja
programa u memoriju.

3. Faze vezivanja instrukcija i podataka


1) Vreme prevodjenja [compile time] - posto nije poznato gde ce
proces koji ce izvrsavati generisani kod biti smesten u memoriji,
prevodilac generise relativne, a ne apsolutne adrese. Program se
kasnije moze smestiti bilo gde u memoriji.
2) Vreme punjenja u memoriji [load time] - povezivac [linker] i
punilac na bazi relokatibilnog koda generisu apsolutne adrese i pune
memoriju programom.
3) Vreme izvrsavanja [execution time] - tokom izvrsavanja proces se
moze pomerati sa jednog segmenta na drugi (ukljucujuci i disk u koliko
se koristi virtuelna memorija)

4. Logicki i fizicki adresni prostor


Adresa koju generise procesorska instrukcija je logicka adresa, a
adresa same memorijske jedinice je fizicka adresa. One su potpuno iste
u fazama prevodjenja i punjenja, ali se razlikuju u fazi izvrsavanja
programa. Skup svih logickih adresa cine logicki ili virtuelni adresni
prostor, a skup svih fizickih fizicki adresni prostor.

KONTINUALNA ALOKACIJA MEMORIJE

1. Sta predstavlja kontinualna alokacija memorije?


Logicki i fizicki adresni prostor procesa sastoje se od kontinualnog
niza memorijskih adresa, tj. svaki proces dobija svoj deo memorije.

2. Sta predstavlja multiprogramiranje sa fiksnim particijama?


To je jedna od najstarijih i najprostranijih metoda alokacije memorije
pri cemu se cela fizicka memorija deli na vise delova fiksne velicine,
a u jednom delu moze se naci samo jedan proces.
Proces se smesta u onaj deo koji je veci ili jednak memoriji koju on
zahteva. Svi procesi se stavljaju u red cekanja koji moze biti
jedinstven za ceo sistem ili poseban za svaku particiju. Ukoliko za
proces koji je dosao na red nema dovoljno memorije, uzima se sledeci
manji proces iz liste.
Nedostatak je interna fragmentacija - ostaju delovi memorije koji su
veci od velicine procesa potpuno neiskorisceni.

3. Sta predstavlja multiprogramiranje sa particijama promenljive


velicine?
Ovde se umesto fiksnih particija memorijski deli, a svaki slobodni
kontinualni deo memorije [supljine] se moze iskoristiti za smestanje
procesa, pod uslovom da je dovoljno velik. Supljine se dinamicki
kreiraju i nestaju. Kada proces naidje u sistem, trazi se supljina
dovoljno velika za sam proces.
Alokacija memorije je dinamicka - memorija se sastoji iz procesa i
supljina, a operativni sistem dinamicki vodi evidenciju o zauzetosti
memorije na jedan od sledecih nacina: bitmape, povezane liste, sistem
udruzenih parova

4. Pojasni nacine kojima operativni sistem vodi evidenciju o


zauzetosti memorije
- bit mape [bitmaps] - memorija se deli na delove iste velicine, a u
krajnjem slucaju to su biteovi. 1 oznacava da je taj deo zauzet, a 0
da je slobodan. Tako dolazimo zo nize 0 i 1 koji predstavljaju bit
mapu memorije.
- povezane liste [linked lists] - grade se od slogova sledece
strukture. Prvo polje sloga oznacava tip memorije (P - proces, H -
slobodna memorija). Drugo polje sadrzi pocetnu adresu dela memorije,
trece polje duzinu memorije, a cetvrto pokazivac na sledeci slog.
- sistem udruzenih parova - u tom sistemu. Na pocetku rada, cela
memorija je prazna dok se u nju ne ubaci proces.

PROGRAMERSKE TEHNIKE UPRAVLJANJA MEMORIJOM

1. sta predstavlja dinamicko punjenje memorije programom?

Dinamicko punjenje je smestaj samo potrebnih delova programa u


memoriju, pri cemu se odgovarajuce rutine ucitavaju u memoriju samo
kada ih program pozove. Sve rutine programa se cuvaju na disku u
relokatibilnom formatu, i kada se rutina pozove iz programa, tada se
proverava da li je ona vec u memoriji i ako nije, poziva se punilac da
je ucita u memoriju.

2. Koje su prednosti dinamickog punjenja?

Prednosti su:
- rutine koje nisu trenutno potrebne ne zauzimaju mesto u memoriji,
sto je korisno za velike programe
- dinamicko punjenje ne zahteva specijalnu podrsku operativnog sistema

3. Sta predstavlja dinamicko povezivanje?

Kod statickog povezivanja, sistemske biblioteke se kombinuju sa


korisnickim programom u jedinstvenu izvrsnu verziju kojom se puni
memorija. Neki OS podrzavaju jedino koncept statickog povezivanja. Kod
dinamickog povezivanja, punjenje modula se odlaze (memorija se puni
modulima po potrebi),isto se postupa i sa povezivanjem [link]. Iz
sistemske biblioteke se puni po potrebi. Za razliku od dinamickog
punjenja, dinamicko povezivanje trazi podrsku na nivou operativnog
sistema, u kontekstu da istu sistemsku rutinu koja je u memoriji mogu
koristiti vise procesa.

4. Objasni tehniku preklapanja

Koristi se da bi omogucilo izvrsenje procesa koji je veci od same


fizicke memorije [overlay]. U memoriji se cuvaju samo oni delovi
programa koji su pottrebni u tom trenutku. Kada drugi delovi programa
budu potrebni, oni ce se ucitati u memoriju umesto nepotrebnih delova.

You might also like