Professional Documents
Culture Documents
Upravljanje Linearnom Memorijom
Upravljanje Linearnom Memorijom
UPRAVLJANJE MEMORIJOM
01:03:41 AM 1
Osnovne funkcije upravljanja
memorijom zadatak OS-a
Voenje evidencije o koritenju memorije
Dodjela memorije procesima kad je zahtjevaju
Oduzimanje memorije procesima kad im vie ne treba
Obavlja razmjenu (swap) ukoliko radna memorija nije
dovoljnog kapaciteta za smjetanje svih procesa
01:03:41 AM 2
Podjela memorije
Raunarski sistem obino sadri vie vrsta memorije:
primarna memorija,
sekundarna memorija,
tercijarna memorija,
off-line memorija,
mrena memorija.
01:03:41 AM 3
Podjela memorije
Primarna memorija povezana na CPU
Primarna memorija:
procesorski registri,
ke memorija (engl. cache) i
glavna (interna) memorija.
01:03:41 AM 4
Podjela memorije
Sekundarna memorija
zahtjeva koritenje ulazno/izlaznih kanala
dugotrajno smjetanje podataka
Tvrdi diskovi (engl. hard disks) - tipian primjer
sekundarne memorije
01:03:41 AM 5
Podjela memorije
Tercijarna memorija
za specijalnu namjenu kod velikih raunarskih
sistema
razliite poslovne ili naune namjene
Off - line memorija
moe se lako diskonektovati
koristi se za arhiviranje podataka
diskete, optiki diskovi, USB diskovi ili magnetne
trake
Mrena memorija
ukljuuje pristup informaciji putem raunarske mree
01:03:41 AM 6
Upravljanje memorijom
Monoprogramiranje bez swapping-a i stranienja
Tri jednostavna naina organizacije memorije
operativni sistem sa jednim korisnikim procesom
01:03:41 AM 7
Multiprogramiranje
Istovremeno imamo vie spremnih procesa uinternoj
memoriji
Razlozi za uvoenje multiprogramiranja:
rad sa vie korisnika:
imamo raunar i nekoliko terminala
bolje iskoritenje procesorskog vremena:
dok proces A eka na podatke sa diska, procesor bi
mogao izvravati proces B
jednokorisniki sistemi: Dok tampamo dokument
moemo igrati ah
01:03:41 AM 8
Multiprogramiranje s fiksnim
particijama
Liste ekanja:
svaka particija ima svoju listu ekanja
imamo jednu listu ekanja za sve particije
Izbor procesa na dva osnovna naina:
proces koji je najblii u redu ekanja i moe stati u
datu particiju. Nedostatak: na raspolaganju velika
particija, a na redu je mali proces - gubitak memorije
biramo najvei od svih onih procesa koji mogu stati u
datu particiju Nedostatak: mali procesi su
diskriminirani
01:03:41 AM 9
Multiprogramiranje s fiksnim
particijama
01:03:41 AM 10
Multiprogramiranje s fiksnim
particijama
Rjeenja za izbjegavanje navedenih nedostataka
Potrebno je definisati dovoljan broj dovoljno malih
particija
Pravilo: ni jedan zahtjev ne smije biti preskoen vie
od k puta - MFT (multiprogramming with a fixed
number of tasks)
01:03:41 AM 11
Relokacija
Jedan isti proces moe biti uitan i izvravan u razliitim
particijama - problema relokacije
Adresa koju generie procesorska instrukcija je logika
Adresa same memorijske jedinice je fizika
Logike i fizike adrese su iste
u fazi prevoenja
u fazi uitavanja programa
razlikuju se u fazi izvravanja
Logika adresa se u fazi izvravanja- virtualna adresa
Skup svih logikih adresa koje generie program naziva se
logiki ili virtuelni adresni prostor
Skup svih fizikih adresa koje njima odgovaraju naziva se
adresni prostor.
01:03:41 AM 12
Relokacija
Mapiranje virtualnog adresnog prostora u fiziki
obavlja hardverski ureaj koji se zove MMU jedinica
za upravljanje memorijom (engl. Memory
Management Unit).
Najjednostavnija ema mapiranja - ema koja koristi
relokacioni registar Relokacioni registar definie
adresu fizikog poetka programa
Logika adresa koju generie program +vrijednost
relokacionog registra = fizika adresa
Korisniki program poinje od nulte adrese.
Primjer: 8086 segmentni registri
01:03:41 AM 13
Zatita
Sprijeiti proces koji je uitan u particiju A da pristupi
sadraju particije B?
Koritenjem baznog i limit registra hardverske
podrka:
base register (bazni registar)- bazni registar uva
poetnu adresu particije gde je proces uitan
limit register (limit (granini) registar) limit
registar krajnju adresu te particije (ili veliinu particije)
01:03:41 AM 14
Upravljanje memorijom
SWAPPING (prebacivanje procesa)
nemamo dovoljno mjesta u operativnoj
memoriji za smjetanje svih spremnih procesa,
neki se izbacuju na disk
cijeli spremni procesi iz interne memorije se
prebacuju na disk, odnosno spremni procesi sa
diska se prebacuju u internu memoriju
PAGING (stranienje)
dijelove procesa drimo na disku, a uitavaju
se po potrebi
01:03:41 AM 15
Swapping
Tehnika razmjene zahtjeva (swap) zahtjeva postojanje
tri komponente:
prostor na disku (engl. swap space)
mehanizam swap-out koji prebacuje procese
iz memorije na disk
mehanizam swap-in koji vraa uspavani
proces sa diska u memoriju
Primjer: Windows 2.0
01:03:41 AM 16
Multiprogramiranje sa promenljivim
particijama
Dodjeljivanje memorije se mjenja kada
procesi dolaze u memoriju
naputaju memoriju
Osjeneni dijelovi su neiskoritena memorija
01:03:42 AM 17
Razlika izmeu fiksnih i
promjenljivih particija
Fiksne particije:
broj, veliina, pa i lokacija svih particija su odreeni
unaprijed pri pokretanju sistema od strane sistem
operatora
Promjenjive particije:
ne znamo unaprijed ni broj, ni veliinu ni lokaciju
particija ti parametri se odreuju dinamiki i zavise
od procesa koji se izvravaju
Fleksibilnost poboljava iskoritenost memorije
dodjeljivanje, oslobaanje i upravljanje memorijom
komplikovanije
01:03:42 AM 18
Interna fragmentacija
Interna fragmentacija
procesu dodjeli dio memorije vei od memorije koju
proces zahtjeva.
Preostali dio memorije ostaje neiskoritena sve dok
proces ne oslobodi svu memoriju koju je zauzeo.
01:03:42 AM 19
Eksterna fragmentacija
Eksterna fragmentacija
karakteristina za sisteme sa kontinualnom dodjelom
memorije.
Procesu se ne moe dodjeliti odreena koliina
memorije jer na sistemu ne postoji dovoljno velik
kontinualni memorijski blok bez obzira to ukupna
koliina slobodne memorije premauje zahtjeve procesa
Kompakcija:
pomjerati sve procese tako da se sve slobodne
particije nalaze na jednom mjestu kontinualno
01:03:42 AM 20
Procesi mogu rasti
Dodjela praznine koja lei neposredno do procesom
okupiranog dijela memorije
rastui proces se mora prebaciti (ili drugi procesi
izbaciti)
Kada proces ne moe dalje rasti proces mora ekati ili biti
prekinut:
Procesi su duni da prilikom uitavanja u memoriju jave
maksimalnu veliinu
Proces se ubija (prekida) uz poruku o greci
Proces se prebacuje na disk i eka da se potrebna
koliina memorije oslobodi
gdje se nalaze zauzete particije i koje su njihove veliine
gdje se nalaze prazne particije i koje su njihove veliine
01:03:42 AM 21
Dodjela rastueg procesa
01:03:42 AM 22
Strukture podataka za upravljanje
memorijom
Za voenje evidencije o zauzetosti memorije
(o zauzetim particijama) i
o rupama izmeu particija (slobodna memorija)
1. Bit mape (bit maps)
2. Povezane liste (linked lists)
3. Sistem udruenih parova - drugova (buddy sistem)
01:03:42 AM 23
Strukture podataka za upravljanje
memorijom
Za voenje evidencije o zauzetosti memorije
(o zauzetim particijama) i
o rupama izmeu particija (slobodna memorija)
1. Bit mape (bit maps)
2. Povezane liste (linked lists)
3. Sistem udruenih parova - drugova (buddy sistem)
01:03:42 AM 24
Bitmape
memorija se dijeli na dijelove iste veliine
svakom dijelu odgovara jedan bitu u bit mapi:
0 znai da je jedinica slobodna
1 da je zauzeta (ili obrnuto)
Niza nula i jedinica (bitova) - bit mapa memorije
Kad neki proces treba k jedinica, treba pretraiti bit
mapu traei niz k 0 - bita.
01:03:42 AM 25
Poreenje bitmape i uvezane liste
Dio memorije sa 4 procesa, 3 praznine
dodjeljene jedinice oznaene slovima
osjeneni regioni su slobodni
Odgovarajua bitna mapa
Iste informacije kao lista
01:03:42 AM 26
Upravljanje memorijom s povezanim
listama
Zauzimanje memorije:
Oslobaanje memorije:
01:03:42 AM 27
Upravljanje memorijom s povezanim
listama
01:03:42 AM 28
Buddy sistem
01:03:42 AM 29
Buddy sistem
01:03:42 AM 30
Buddy sistem
01:03:42 AM 31
Buddy sistem
itav dostupni prostor se tretira kao jedan blok veliine
2U
Ako je veliina zahtjeva s takva da je
2U-1 < s <= 2U, itav blok se zauzima
U suprotnom blok se dijeli na jednake dijelove
(buddies)
Postupak se nastavlja sve dok se ne nae najmanji
blok koji je vei ili jednak zahtjevu s
01:03:42 AM 32
Buddy sistem
01:03:43 AM 33
Algoritmi za izbor prazne particije
Prvo uklapanje (FIRST FIT)
Slijedee uklapanje (NEXT FIT)
Najbolje uklapanje (BEST FIT)
Najvea particija - najgore uklapanje (WORST FIT)
01:03:43 AM 34
Varijacije algoritma
Koristimo dvije liste jednu listu za procese i jednu
listu za praznine.
Prednost - brzina (ne treba prei i preko procesa)
Nedostatak - poveana kompleksnost auriranja
Ako koristimo dvije liste,
listu za praznine sortirati po veliini best fit i worst
fit veoma brzo rade (postaju efikasni kao i first fit)
01:03:43 AM 35
Varijacije algoritma
Koristimo posebnu listu za procese i vie lista za
praznine.
Formiramo liste praznine esto koritenih veliina,
npr. 4KB, 8KB, 20KB itd.
Neobine (praznine nepredviene veliine)
stavljamo u posebnu listu
quick fit
dobra strana je brzina
loa strana je komplikovanost auriranja
01:03:43 AM 36
WINDOWS API ZA ALOKACIJU
MEMORIJE
CopyMemory (pDestination,pSource,iLength )
Kopira blok memorije s jednog mjesta na drugo
FillMemory(pDestination,iLength,bFill);
Puni memoriju istim bajtom
GetProcessHeap()
Dobavlja alokacijsko podruje za proces
VirtualAlloc(lpAddress,dwSize,dwAllocationType,dwProtect)
Alocira dio virtuelne memorije za proces (zaokrueno na veliinu stranice)
VirtualFree(lpAddress,dwSize,dwFreeType);
Oslobaa alociranu virtuelnu memoriju
HeapAlloc(hHeap,dwFlags,dwBytes)
Alocira dio memorije unutar procesa
HeapReAlloc(hHeap,dwFlags,lpMem,dwBytes)
Mijenja veliinu memorije za proces
HeapFree(hHeap,dwFlags,lpMem)
Oslobaa memoriju alociranu za proces
HeapSize(hHeap,dwFlags,lpMem)
Dobavi veliinu alociranog memorijskog bloka
01:03:43 AM 37
POSIX API ZA ALOKACIJU
MEMORIJE
int brk(void *end_data_segment);
Postavlja kraj podruja memorije za proces
void *sbrk(intptr_t increment);
Uveava kraj podruja memorije za proces
Aplikacije trebaju koristiti C funkcije
calloc()
malloc()
realloc()
valloc()
memalign()
01:03:43 AM 38
Dijeljene biblioteke
Velike biblioteke koriste mnogi procesi. Umjesto ugradnje u
svaki, bolje je ii na dijeljene bilblioteke
Unix link
ld *.o lc lm . Datoteke koje nisu prisutne u .o se trae u m ili c
bibliotekama I ukljuuju u izvrne programe.
Objektni program se pie na disk.
01:03:43 AM 39
Dijeljene biblioteke
Linker koristi pomonu rutinu da pozove vezu na funkciju pri
izvrenju
Dijeljena biblioteka se uitava samo jednom (prvi put
kada se referencira).
Ubaci se u stranice ili joj se dodijeli segment
Potreban poziciono nezavisan kod da se izbjegne pogreno
povezivanje.
Ideja: Kompajler ne treba proizvoditi apsolutne adrese
kada se koriste dijeljene biblioteke.
01:03:43 AM 40
Dijeljene biblioteke
01:03:43 AM 41
WINDOWS API ZA DIJELJENE
DATOTEKE
LoadLibrary(lpFileName)
Uitava dinamiku biblioteku (.dll) u memoriju
FreeLibrary(hModule)
Oslobaa dinamiku biblioteku iz memorije
GetModuleFileName(hModule,lpFilename,nSize)
Dobavi puno ime biblioteke s stazom
GetProcAddress(hModule,lpProcName)
Trai adresu podprograma s datim imenom u dinamikoj
biblioteci
DllMain (hinstDLL,fdwReason, lpvReserved)
Glavna rutina DLL podprograma
01:03:43 AM 42
POSIX API ZA DIJELJENE
DATOTEKE
dlopen(pFilename, iFlag)
Uitava dinamiku biblioteku (.so)
dlsym(handle, pSymbol)
Vraa adresu podprograma ili drugog simbola u
dinamikoj biblioteci
dlclose(handle)
Zatvara dinamiku biblioteku
01:03:43 AM 43