You are on page 1of 43

OPERATIVNI SISTEMI

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:

Imamo proces, traimo dovoljno veliku rupu u memoriji.


Pretraujemo povezanu listu, traimo slog tipa H (praznina)
dovoljne veliine. Ako naemo, umesto H upiemo P, i
eventualno ubacimo novi vor tipa H (ako proces ne
zauzima cijelu prazninu, ostaje nam neka manja praznina).

Oslobaanje memorije:

stavimo H umesto P ako se i ispred i iza procesa A nalazi


neki drugi proces (a ne slobodna memorija), inae vrimo
auriranje liste:

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

You might also like