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.