Please enable JavaScript.
Coggle requires JavaScript to display documents.
Upravljanje memorijom - Coggle Diagram
Upravljanje memorijom
Prikaz memorije
- sastoji se od niza memorijskih celija
- one mogu da sacuvaju bit - najmanje kolicina podataka
- bitovi se organizuju u bajtove - grupe od 8 bita - najmanja adresibilna jedinica
- memorijska rec
- odredjuje kolicinu podatak koju procesor moze da obradi u jednom trenutku
- odredjena je arhitekturom konkretnog racunara: 32 / 64
- cesto se misli na adresibilni prostor racunara
- radna memorija
- moze se predstaviti kao matrica bitova
- N x 8 - niz bajtova - redni broj bajta = adresa tog bajta
- svaki program koji se izvrsava mora se ucitati u radnu memoriju
- nisu poznate adrese, pa se koriste simbolicke adrese - imena promenljivih u programskim jezicima
- kada se program ucita u memoriju on mora da radi sa realnim adresama
- simbolicke -> fizicke - povezivanje adresa (address binding)
- prevodjenje programa - ako je u to vreme poznato gde ce se ucitati program
- cesce kompilator (prevodilac) generise relativne (relokatibilne) adrese u odnosu na pocetak dela memorije koji se dodeljuje procesoru
- prevodi izvorni kod u objektni(e) modul(e) - linker ih povezuje u izvrsni program
- prilikom ucitavanje programa punilac (loader) preslikava relativne adrese u fizicke
- ako se program moze premestati za vreme izvrsavanja -> povezivanje tokom izvrsavanja
- biblioteke se ucitavaju u memoriju kada se steknu odredjeni uslovi kako ne bi nepotrebno zauzimale prostor
- procesor ne manipulise fizickim adresama nego logickim koje sam generise
- skup svi logickih adresa - logicki / virtuelni adresni prostor
- svakoj logickoj adresi odgovara fizicka adresa
- skup svih fizickih adresa koje odgovaraju adresama logickog procesora - fizicki adresni prostor
- povezivanje adresa za vreme prevodjenja i punjenja programa -> logicki i adresni prostor se podudaraju
- povezivanje adresa tokom izvrsavanja -> ne podudaraju se logicki i fizicki adresni prostori
- logicke -> fizicke - MMU (Memory-Management Unit)
- MMU - uredjaj koji ima poseban registar - bazni registar
- dodaje vrednost baznog registra na logicku adresu i tako generise fizicku adresu
- logicke adrese - 0 do max, ako je R vrednost baznog registra -> MMU preslikava u fizicke adrese u opsegu od R+0 do R+max
Prilikom upravljanja memorijom OS mora da ispuni 2 uslova:
- svaki proces mora imati dovoljno memorije za izvrsavanje i ne sme pristupati memoriji drugog procesa, isto vazi i za drugi proces
- razlicite vrste memorija unutar racunarskog sistema moraju biti koriscene tako da se svaki proces izvrsava najefikasnije moguce
Multiprogramiranje
- izvrsavanje procesa moze biti blokirano npr. cekanje na U/I operacije
- kod monoprogramiranja procesor prestaje sa radom -> stepen neiskoriscenosti veliki
- povecanje iskoriscenosti -> napredniji pristupi upravljanja procesima zasnovani na multiprogramiranju
- p - procenat vremena koje proces trosi na cekanje
- n - broj procesa u memoriji
- p^n - verovatnoca da se svih n procesa nadje u stanju cekanja
- 1 - p^n - procenat vremena u kojem procesor radi - iskoriscenost procesora - aproksimativne prirode
Prebacivanje
- za vreme izvrsavanja proces mora biti ucitan u memoriju, ali dok ceka na resurse nije neophodno da se nalazi u memoriji
- jednostavna tehnika upravljanja memorijom (i procesima)
- ideja: blokirani proces premestiti u sekundarnu memoriju (disk), a u memoriju ucitati drugi proces
- formiranje reda privremeno blokiranih procesa
- procesi iz reda blokiranih procesa koji su u mogucnosti da nastave sa radom formiraju red spremnih procesa
- nakon toga odlucuje da li ce ucitati novi program u memoriju ili ce aktivirati neki iz reda spremnih procesa
- efikasnost zavisi od brzine sekundarne memorije - treba da bude i dovoljno velika da prihvai memorijske slike za sve procese i omoguciti direktan pristup ka njima
- vreme potrebno za prebacivanje procesa nije zanemarljivo malo -> tezi se da vremena trajanja procesorskih aktivnosti budu srazmerno duza od vremena potrebnog za prebacivanje
- prenos koristi najvise vremena - direktno proporcionalan kolicini podataka
napredniji pristup za prebacivanje
- preklapanje prebacivanje i izvrsavanja procesa
- potrebno je rezervisati bar dva memorijska regiona koji mogu prihvatiti dve memorisjke slike procesa - baferi
- tok:
- kada proces koji se izvrsava oslobodi procesor premesta se u slobodni bafer -> pokrece se njegovo pomeranje na sekundarnu memoriju
- naredni proces se pomera iz bafera u oblast memorije predvidjene za izvrsavanje
- u odgovarajuci bafer se ucitava proces koji je sledeci naredu za izvrsavanje
Particije
- particionisanje memorije - podeli se na n delova - particija koje prestavljaju neprekidne delove memorije
- mogu biti jednake, ali i razlicitih velicina
- u svaku se moze smestiti po jedan proces
- stepen multiprogramiranja u ovom slucaju je n
- ako su sve zauzete, a neki program treba da zapocne izvrsavanje, onda se formira red spremnih procesa
- kada se neka od zauzetih oslobodi, ucitava se neki od spremnih procesa
- ako je vise njih slobodno, postoje razlicite politike za dodelu
- potrebno je zastititi particije od pristupa drugih procesa
- hardverska podrska od dva registra
- fizicke adrese pocetka i kraja ili
- adresa pocetka i velicina particije
- postoje dva pristupa:
staticki
- deljenje na fiksan broj particija - svaka moze sadrzati proces
- najcesce nisu iste velicine - male za kratke, vece za zahtevnije procese
- tok:
- procesi se smestaju u red spremnih poslova
- planeri vode racuna o memorijskim potrebama svakog procesa i o raspolozivim particijama
- kada se smesti u particiju tada moze konkurisati za dobijanje procesora i ostalih resursa
- kada zavrsi oslobadja particiju i onda se ona moze dodeliti drugom procesu
- odabir particije, dve strategije:
- svaka particija ima svoj red poslova u koji se smestaju procesi ciji memorijski zahtevi odgovaraju velicini particije
- svi poslovi se smestaju u jedan red, a planer donosi odluku koji ce se proces sledece izvrsiti
- modifikacija: spreci da particije budu prazne, preskacu se procesi ako postoji particija koja odgovara sledecem procesu
dinamicki
- slican statickom sem sto velicine particija nisu fiksne
- tok:
- pri pokretanju racunara ucitava se OS
- ostatak memorije obrazuje jednu slobodnu particiju
- kada se pokrene prvi proces ta particija se deli na onaj koji se dodeljuje procesu i drugi deo koji ostaje slobodan za ostale procese koji treba da se ucitaju u memoriju
- izvrsavanjem procesa oni oslobadjaju memoriju
- ako pored upravo oslobodjene memorije postoji vec slobodna particija, one se spajaju i dobija se veca slobodna particija
- kada novi proces dodje na red:
- pronalazi se dovoljno velika slobodna particija
- iz nje se izdvaja onoliko memorije koliko je procesu potrebno
- sistemi moraju voditi racuna o slobodnoj i zauzetoj memoriji:
- bit-mape
- memorija se podeli na jednake delove i svakom se pridruzi po jedan bit - 1 ako je zauzet, 0 ako nije
- za punjenje memorije potrebno naci dovoljno veliki niz nula
- implementacija jednostavna, ali vreme za pretrazivanje i pronalazenje je dosta veliko
- povezane liste
- svaki cvor sadrzi:
da li je smesten proces ili je u pitanju slobodna memorija
pocetak odgovarajuceg dela memorije
duzina tog dela memorije
pokazivac na sledeci cvor koji cuva info o narednom delu memorije
Fragmentacija
- nezeljena pojava kod sistema sa particijama
- kada postoje delovi memorije koji su slobodni, ali ih sistem ne moze iskoristiti
- moze biti:
- interna
- prostor koji ostaje neiskoriscen kada se proces smesti u deo memorije (particiju) vecu od njegovih memorijskih potreba
- ako proces zauzima m memorijskih reci, a ucita se u particiju velicine n reci, gde je n > m, tada n - m memorijskih reci prestavlja fragment
- skoro sigurno se javlja kod statickog particionisanja
- eksterna
- u sistemu postoje delovi memorije (particije) koji su slobodni, ali nisu dovoljno veliki da se u njih smesti neki proces - neupotrebljivi
- javlja se kod dinamickog particionisanja, ali i kod statickog
- resenje: kompakcija
Algoritmi za dodelu memorije
- prvo poklapanje (First-Fit)
- cesto se koristi
- proces se smesta u prvu slobodnu zonu koja je dovoljno velika da on moze da stane u nju
- pretraga krece od pocetka memorije
- deo koji je zauzeo se oznacava kao zauzet, a preostali ostaje slobodan za druge procese
- vreme je realtivno malo, ali je losa iskoriscenost memorije zbog ceste pojave fragmentacije
- sledece poklapanje (Next-Fit)
- modifikacija prethodnog pristupa
- pretraga ne krece ispocetka vec se nastavlja odakle je prethodna stala
- pokazalo se da ima malo losije preformanse od prethodnog
- slucajno (Random)
- od svih slobodnih i dovoljno velikih zona se slucajno bira ona u kojoj ce se smestiti proces
- relativno zahtevno jer treba odrediti kandidate za smestanje i generisati slucajan broj
- najbolje poklapanje (Best-Fit)
- smestanje procesa u najmanji od svih slobodnih delova koji su veci od potreba procesa
- zahtevan za implementaciju - proci kroz celu memoriju, izracunati velicinu svih slobodnih regiona i pronaci najmanji koji je veci od memorijskih zahteva procesa
- zahteva vise vremena za dodelu memorije od prvog poklapanja, ali su mu rezultati veoma dobri
- najgore poklapanje (Worst-Fit)
- smestiti proces u deo memorije u koji se najgore uklapa
- pretpostavka da bi se ovakvim rasporedjivanjem procesa slobodan ostatak mogao iskoristiti za neki drugi proces
Stranicenje
- jedan od prvih nacina upravljanja memorijom koji je dozvoljavao da memorija dodeljena procesu ne bude alocirana u jednom komadu, tj. iskljucivo na adresama koje se nalaze jedna za drugom
- omogucava se proceu da dobije memoriju ako je slobodna, bez obzira gde se ona nalazi
- osnovna ideja: radna memorija se podeli na okvire (frames) fiksirane velicine, a da se logicka memorija potrebna procesu podeli na stranice koje su iste velicine kao i okviri
- kada proces treba da se ucita u memoriju, pronalaze se slobodni okviri i u njih se smestaju odgovarajuce stranice
- za vreme izvrsavanj programa procesor radi sa logickim adresama, ona se ovde sastoji iz:
- broja stranice - p
- pozicije u okviru stranice - d
- logicke -> fizicke - tabela stranica
- OS generise za svaki proces koji se izvrsava
- sadrzi podatke o tome u kojim okvirima u memoriji su smestene njene stranice
- fizicka adresa se dobija dodavanjem d na adresu okvira u kojem se nalazi odgovarajuca stranica
- velicina stranice / stranice je unapred definisana
- uglavnom je stepen broja 2
- omogucava da relativne i logicke adrese budu jednake
- omogucava jednostavno preslikavanje logickih (relativnih) adresa u fizicke - p | d -> f -> d
- ako je velicina stranice P, a U je relativna adresa, onda:
- d = U mod P
- primer: P = 1KB = 1024B = 2^10B, U = 1327 = 0000010100101111
- po formulama d = 303, a p = 1 pa je odgovarajuca logicka adresa 1|303
- nizih 10 bitova prestavlja binarni zapis broja 303, a visi bitovi odgovaraju broju 1
000001 | 0100101111
- nema eksterne fragmentacije, jer svaki slobodni okvir moze biti dodeljen
- interna fragmentacija skoro sigurno postoji, jer je obicno poslednji okvir dodeljen procesu ne bude potpuno popunjen
- prednost: mogucnost deljenja zajednickog koda
- ukoliko se kod ne samomodifikuje tokom izvrsavanja, moguce je da vise korisnika koristi istu kopiju tog koda u memoriji
- zastitni bitovi se pridruzuju svakoj stranici i cuvaju se u tabeli stranica
- jednim bitom se odredjuje da li se stranica moze citati i modifikovati ili samo citati
- cuva se u skupu registara - ako je tabela relativno male velicine
- cuva se u memoriji, a na njenu lokaciju pokazuje bazni registar tabele stranica - PTBR (Page Table Base Register) - kada je tabela veca
- neefikasno jer je za pristup jednoj lokaciji potrebno da se dva puta pristupa memoriji
- impelemtacija efikasne tabele stranica - asocijativna memorija
- kes memorija koja je posebno dizajnirana za potrebe stranicenja
- malo sporija od registara, ali je veceg kapaciteta
- ima osobinu da cuva podatke u parovima (kljuc, vrednost), a pretraga se vrsi simultano na svim kljucevima
- kljucevi su redni broj stranica, a vrednosti odgovarajuce adrese memorijskih okvira
- ako je pretraga uspesna, procesor moze da pristupi memoriji, ako nije doslo je do promasaja i to znaci da je potrebno pretraziti deo tabele stranica koji je u memoriji
- procenat uspesnog pronalaska - nivo pogotka (hit ratio)
-znacajno ubrzanje
Monoprogramiranje
- u memoriji se izvrsava samo jedan korisnicki proces
- jedan deo memorije za OS, ostatak za proces
- OS na nize adrese, a procesor vise
- OS na vrhu memorije, nize koristi proces
- OS na nize, drajveri na vrhu, a ostatak za korisnicki program
- prvi racunarski sistemi i OS mikroracunara
- MS-DOS - treca organizacija
- ucitavanje OS u memoriju - prilikom ukljucivanja sistema
- punilac (bootstrap loader) - prenosi OS iz sekundarne u radnu memoriju - podizanje sistema
- korisnicki program se puni na adrese odmah posle OS-a ili na drugi kraj memorije
- potrebno je zastititi kod i podatke OS-a od slucajnih ili namernih izmena od strane korisnickog programa
- pruza hardver uglavnom
- svaka adresa koju generise korisnicki program se poredi sa sadrzajem zastitnog registra
- ako je manja generise se prekid i OS preduzima odgovarajuce akcije - prekidanje korisnickog programa uz izdavanje odgovarajuce poruke o problemu
- prva adresa u korisnickom programu nije 0 vec prva adresa posle vrednosti zastitnog registra
- povezivanje instrukcija i podataka sa memorijskim adresama:
- za vreme prevodjenja
- vrednost zastitne adrese poznata -> generisati apsolutni kod -> adrese se nizu nakon njega
- problem: promena vrednosti zastitne adrese iziskuje ponovno prevodjenje programa
- za vreme punjenja
- kod promene zastitne adrese potrebno samo ponovno punjenje programa
- vrednost zastitne adrese mora biti fiksirana tokom izvrsenja programa
- potrebno da se promeni velicina dela memorije gde je smesten OS, u toku izvrsavanja programa
- mora da se menja i adresa zastitnog registra
- operacija vremenski veoma zahtevna jer se dosta vremena trosi na kopiranje memorije
Segmentacija
- prevedeni korisnicki program se moze posmatrati kao skup razlicitih logickih celina - segmenata
- glavni program, hip, stek, biblioteke...
- osnovna ideja: dodeliti svakom segmentu poseban memorijski prostor
- svaki segment atomican - ili ce se ceo naci u memoriji ili nece uopste biti ucitan
- mogu biti bilo gde, ali jedan segment mora biti u neprekidnom memorijskom bloku
- nije neophodno da budu iste velicine vec im se dodeljuje koliko im je potrebno
- slicno kao kod stranicenja, logicke adrese se sastoje iz:
- broja segmenta - s
- pozicije u segmentu - d
- svakom procesu se dodeljuje po jedna tabela segmenata
- cuva se po jedan red za svaki segment procesa
- redni broj segmenta
- adresa pocetka segmenta u memoriji
- duzina segmenta
- registrima
- asocijativnoj memoriji
- radnoj memoriji
- bazni registar tabele segmenata - STBR (Segment Table Base Register) - adresa lokacije
- registar duzine tabele segmenata - STLR (Segment Table Length Register) - vodi racuna o velicini tabele segmenata
- mapiranje logickih adresa u fizicke
- (s, d) proveriti da li je broj segmenata validan - s < STLR
- s se dodaje na vrednost regista STBR -> dobija se memorijska adresa reda u tabeli segmenata
- ucitavanje duzine segmenta i fizicke adrese pocetka segmenta
- provera da li je d manje od duzine segmenta
- na fizicku adresu dodati d -> dobija se odgovarajuca fizicka adresa
- prednost: zastita memorije
- sve stavke segmenta se koriste na isti nacin
- neki sadrze instrukcije, a neki podatke
- instrukcije -> samo citati - stiti se od nezeljenih promena i pristupa
- mogucnost deljenja koda i podataka izemdju razlicitih procesa
- ako dva razlicita procesa imaju stavke koje ukazuju na istu fizicku lokaciju
- nema interne fragmentacije
- ima eksterne fragmentacije, ali je manje izrazena nego kod dinamickog particionisanja jer su segmenti manji od kompletnog programa, pa se lakse mogu umetnuti u uske slobodne delove memorije
- segmentacija sa stranicenjem - podela segmenata na stranice cime se omogucava da segmenti ne moraju da se smestaju u neprekidne memorijske blokove - smanjivanje ekterne fragmentacije
Uvod
- osnovni resurs racunarskog sistema
- svaka procesorska instrukcija se mora naci u memoriji, a za izvrsavanje vecine instrukcija potrebni su podaci iz memorije koji moraju ucitati u procesor ili iz procesora vratiti u memoriju
- ogranicen -> efikasno iskoriscenje - osnovni zadatak OS-a - Menadzer memorije
- memorija je bilo koji fizicki uredjaj koji moze privremeno ili trajno da cuva podatke
- podela prema nacina cuvanja podataka:
- privremeno - dok je racunar iskljucen
- trajno
- osnovna podela - na osnovu brzine pristupa
- registri
- memorijske celije ugradjene u procesor - podaci koje trenutno procesor obradjuje
- privremeno cuva podatke
- kes memorija
- veoma brza
- privremeno cuva podatke
- bafer izmedju primarne memorije i procesora
- sadrzi delove podataka za koje se pretpostavlja da ce ih procesor cesto koristiti -> smanjuje broj pristupa sporijim memorijama -> povecava iskoriscenost procesora i efikasnost sistema
- obicno se nalazi u samom procesoru, ali se delovi mogu naci i van njega
- primarna memorija
- sadrzi instrukcije sa kojima procesor trenutno operise -> radna memorija
- znacajno brza od sekundarne, ali sporija od kes
- deli se na:
- RAM (Random Access Memory)
- procesor moze direktno da pristupi bilo kom delu, a vreme pristupa ne zavisi od lokacije i sadrzaja podataka
- privremeno cuva podatke i bez nje racunar ne moze da funkcionise
- ROM (Read Only Memory)
- trajno cuva podatke
- moguce samo citanje podataka
- mala kolicina - sadrzi samo kriticne programe koji sluze za pokretanje OS-a
- sekundarna memorija (spoljasnja memorija)
- trajno cuva podatke
- da bi procesor pristupio ovim podacima oni prvo moraju da budu ucitani u radnu memoriju
- primeri: hard disk, CD-ROM, DVD itd.
- vreme pristupa zavisi od njihove lokacije
- nije neophodna za rad racunara