26
VEŽBE 7 Upravljanje memorijom Zahtevi za upravljanje memorijom: Relokatibilnost: proces se ne učitava uvek u isti deo OM. Mora se obezbediti da pri prestanku obrade procesa on bude premešten u neki drugi deo memorije a nakon toga učitan ponovo na (verovatno) drugo meto u memoriji da bi se nastavilo sa njegovoim izvršavanjem Zaštita: svaki proces treba da bude zaštićen od mešanja sa drugim procesima, bilo slučajno ili namerno. Problem je što je lokacija ne poznata i dodeljuje se dinamički pa se sve memoriske reference koje napravi proces moraju proveriti u vreme izvršenja. Međutim mehanizmi koji podržavaju relokaciju podržavaju i zaštitu. Deljenje: svaki zaštitni mehanizam mora da dozvoli pristup više procesa istom delu OM. Više procesa može da izvršava isti program pa treba obezbediti da svaki od njih ima pristup istoj kopiji programa a ne svaki da ima sopstvenu kopiju Logička organizacija: modularnost programa, čime se postiže bolje iskorišćenje memorijskog prostora. Prosto rečeno, proces odnosno korisnik imaju utisak da im pripada jedna kontinualna celina u memoriji, a u realnosti su razbacani. Fizička organizacija: Predstavlja način na koji su procesi smešteni u memoriji i to posmatrajući na fizičkom nivou tj. njihov položaj na disku (operativnoj ili virtualnoj memoriji) Možemo razlikovati 3 vrste memorije : eksterna memorija (najvećeg kapaciteta, najsporiji, najjeftiniji) interna memorija (manjeg kapaciteta, brži, skuplji) keš (cache) memorija (najmanjeg kapaciteta, najbrža, najskuplja) 1

Vezbe 08 Upravljanje Memorijom

Embed Size (px)

DESCRIPTION

j

Citation preview

VEBE 7Upravljanje memorijom

Zahtevi za upravljanje memorijom:

Relokatibilnost: proces se ne uitava uvek u isti deo OM. Mora se obezbediti da pri prestanku obrade procesa on bude premeten u neki drugi deo memorije a nakon toga uitan ponovo na (verovatno) drugo meto u memoriji da bi se nastavilo sa njegovoim izvravanjem Zatita: svaki proces treba da bude zatien od meanja sa drugim procesima, bilo sluajno ili namerno. Problem je to je lokacija ne poznata i dodeljuje se dinamiki pa se sve memoriske reference koje napravi proces moraju proveriti u vreme izvrenja. Meutim mehanizmi koji podravaju relokaciju podravaju i zatitu. Deljenje: svaki zatitni mehanizam mora da dozvoli pristup vie procesa istom delu OM. Vie procesa moe da izvrava isti program pa treba obezbediti da svaki od njih ima pristup istoj kopiji programa a ne svaki da ima sopstvenu kopiju Logika organizacija: modularnost programa, ime se postie bolje iskorienje memorijskog prostora. Prosto reeno, proces odnosno korisnik imaju utisak da im pripada jedna kontinualna celina u memoriji, a u realnosti su razbacani. Fizika organizacija: Predstavlja nain na koji su procesi smeteni u memoriji i to posmatrajui na fizikom nivou tj. njihov poloaj na disku (operativnoj ili virtualnoj memoriji)Moemo razlikovati 3 vrste memorije :

eksterna memorija (najveeg kapaciteta, najsporiji, najjeftiniji)

interna memorija (manjeg kapaciteta, bri, skuplji)

ke (cache) memorija (najmanjeg kapaciteta, najbra, najskuplja)

Nas e najvie interesovati interna memorija (operativna memorija) i njen odnos sa eksternom memorijom. Procesor moe izvravati samo procese koji su u internoj memoriji. Kako je operativna memorija relativno malog kapaciteta, dolazimo do sledeih problema:

proces je vei od interne memorije (i kod monoprogramiranja i kod multiprogramiranja)

nemamo dovoljno memorije da uitamo sve spremne procese (kod multiprogramiranja)

Upravlja memorijeDeo operativnog sistema koji upravlja korienjem memorije zove se upravlja memorije (memory manager). Njegov zadatak je da vodi rauna o tome, koji delovi memorije su zauzeti, koji delovi su slobodni, da zauzme potrebnu koliinu memorije za nove procese odnosno da oslobodi memoriju zauzetu od strane nekog procesa, i da upravlja prebacivanjem procesa iz interne u eksternu memoriju i obrnuto pri tome mora voditi rauna o tome, da procesi ne tete jedni drugima, a ni operativnom sistemu.

U sluaju kada nemamo dovoljno interne memorije, koriste se sledee tehnike:

1. RAZMENA KOMPLETNIH PROCESA (SWAPPING) ako nemamo dovoljno mesta u operativnoj memoriji za smetanje svih spremnih procesa, neki se izbacuju na disk. Kada je potrebno, celi spremni procesi iz interne memorije se prebacuju na disk, odnosno spremni procesi sa diska se prebacuju u internu memoriju.

2. STRANIENJE (PAGING) delove procesa drimo na disku, uitavaju se po potrebi

Razmena (Swaping)

Proces mora biti u memoriji dok se izvrava. Postoje situacije kada proces moe da privremeno prebaci na disk, kako bi oslobodio memoriju, a takoe da se ponovo vrati sa diska u memoriju da bi nastavio izvravanje. U osloboenu memoriju puni se drugi proces, to je ilustrovano na slici .

Razmenjivanje se koristi u prioritetnim emama za rasporeivanje procesa, gde se se procesi visokog prioriteta uvaju u memoriji, a svi procesi niskog prioriteta se upisuju na disk i ekaju da se oslobodi memorija za njih. Ova varijanta razmenjivanja se naziva roll out, roll in. Proces koji se razmenjuje mora biti potpuno osoboen aktivnosti, ne sme da radi a ne sme biti ni blokiran sa nekim I/O.

Tehnika razmenjivanja postoji na svim operativnim sistemima i to u raznim modifikovanim varijantama. Retko gde se korisiti razmena celih procesa, uglavnom se mali delovi memorije razmenjuju (pages), odnosno tehnika razmenjivanja se tesno povezuje sa tehnikom virtuelne memorije .

Stranienje (Paging)

Stranienje reava prolem eksterne fragmetacije a takoe omoguava potpuno novi koncept u swap tehnici, tako to omoguava da samo delovi procesa idu na disk, a ne celi procesi. Stranienje je metod koji se maksimalno koristi u svim operativnim sistemima i raunarskim arhitekturama. Stranienje ne bi postiglo takve efekte ni takvu primenu da nije doivelo hardversku podrku kroz same procesore. Gotovo da ne postoji ni jedan savremeni procesor, koji hardverski ne podrava stranienje.

Bazini metod

Funkcionisanje metode stranienja prikazano je na slici..

Fizika memorija, ondnosno fiziki adresni prostor se izdeli na blokove fiksne veliine koji se nazivaju fizike stanice ili okviri (page frames). Logiki adresni prostor se takoe izdeli na blokove istih veliina koje se nazivaju logike stranice (pages). U daljem tekstu pod terminom stranice podrazumevaemo logiku stranicu a pod terminom okvir podrazumevaemo fiziku stanicu. Veliine stranice su po pravilu stepen broja 2, obino od 512 bajtova do 8KB, mada mogu biti i dosta velike kao 16MB. A takoe i swap prostor na disku se deli na stranice koje odgovaraju memorijskim stranicama.

Metod stranienja funkcionie na sledei nain. Svakoj logikoj stranici odgovara jedna fizika a korespodencija izmeu njih se uva u tabeli stranica (page table). Na ovaj nain kontinualni logiki prostor procesa moe da se razbaca po memoriji, na nivou granularnosti od jedne stanice.

Svaka logika adresa koju generie CPU se deli na 2 dela:

Broj stranice p (Page number p) koristi se kao indeks u tabeli stranica koja sadri baznu adresu fizike stanice, okvira. Bazna adresa predstavlja vii deo adrese.

Pomeraj unutar stranice (Page offset d): definie poloaj u odnosu na samu stranicu i u kombinaciji sa baznom adresom (isto sabiranje) definie punu fiziku adresu koja se alje memorijskoj jedinici. Naglasimo da je osnovna adresibilna jedinica bajt i da je pomeraj isti i za logiku i fiziku adresu.

Ako je veliina logikog adresnog prostora 2m, a veliina stanice 2n, tada vii deo adrese duine m-n definie broj stranice, odnosno bazni vii deo adrese, a najniih n bita adrese predstavljaju pomeraj unutar stranice.

PRIMER: Za memoriju od 32 bajta i stranice veliine 4 bajta, to znai 8 stranica fizike memorije, uzmimo korisniki proces koji zauzima 4 logike stranice, sa logikim adresama: stranica 0 (0-3), stranica 1 (4-7), stranica 2 (8-11) i stranica 3 (12-15). Ako je PAGE TABLE 1, 4, 3, 7 skicirati izgled fizike memorije.RESENJE4 = 2n => n = 2m = 8 stanica fizike memorije n = 6

Logika adresa 0, ima broj logike stranice 0 i pomeraj 0. Pomou broja logike stranice ulazimo u tabelu stranica i nalazimo da je ona smetena u okvir broj 1. I tako redom logika stranica 1 je smetena u okvir 4, logika stanica 2 u okvir 3 i logika stranica 3 u okvir 7. Pri stranienju Minimalan gubitak je 0, a najvei gubitak imamo kada se zahteva koliina memorije (N*page +1) kada zbog jednog bajta gubimo celu stranicu-1, tako da je uproeno reeno, srednji gubitak memorije po procesu iznosi 1/2 stranice. Tabele stranica su 32 bitne uglavnom, 4 bajta po jednom ulazu, mada tee ka 64-bitnim strukturama. Na primer ako ja tabela stranica 32 bitna i veliina stranica 4KB, moe se adresirati 232*4*210=16TB fizikog adresnog prostora.

Znaajan aspekt stranienja je jasno razdvajanje korisnikog pogleda na memoriju i aktulene fizike memorije. Korisnik svoj deo memorije doivljava kao kontinualni prostor, dok u realnosti, stranice raznih procesa su razbacane svuda po memoriji. Mapiranje logikog i fizikog prostora je zadatak operativnog sistema i potpuno skriveno od korisnika. ZADATAK 1: Data je tabela stranica jednog procesa na sitemu sistemu veliine stranice 2KB.

stranicaokvir

01

14

23

37

412

Koje fizike adrese odgovaraju sledeim logikim adresama:

(a) 251, (b) 3129, (c) 10000, (d) 6066 ?REENJE:

broj stranice = ceo broj kolinika logike adrese i veliine stranice

ofset = ostatak pri deljenju logike adrese i veliine stranice

(a)Logika adresa 251

broj stranice=[251/2048]=0 ( okvir=1, ofset=251%2048=251,

fizika adresa=1x2048+251=2299

(b)Logika adresa 3129

broj stranice=[3129/2048]=1 ( okvir=4, ofset=3129%2048=1081,

fizika adresa=4x2048+1081=9273

(c)Logika adresa 10000

broj stranice=[10000/2048]=4 ( okvir=12, ofset=10000%2048=1808,

fizika adresa=12x2048+1808=26384

(d)Logika adresa 6066

broj stranice=[6066/2048]=2 ( okvir=3, ofset=6066%2048=1970,

fizika adresa=3x2048+1970=8114Segmentacija

Do sada smo razmatrali sluaj da korisniki proces, odnosno program zahteva kontinualni memorijski prostor. Meutim, sama struktura programa nije kontinualna, ve se logiki deli na vie nezaviznih celina. Na primer sam kod se sastoji od glavnog programa, procedura, funkcija i modula. Podaci se takoe sastoje od vie celina kao to su tabele, polja, stek, promenljive itd. Svaki od ovih logikih segmenata dobija ime pomou kojih se referencira. Svaki od ovih segmenata moe nezavisno da se puni u memoriji. Tipian logiki izgled programa prikazan je na slici...

Segmentacija je ema za upravljanje memorijom koja podrava logiki korisniki pogled na memoriju, u kojoj se logiki adresni prostor sastoji od kolekcije segmenata. Svaki segment ima jedinstveno ime i duinu. Logika adresa se definie preko dve komponente: ime segmenta i pomeraj unutar segmenta. Umesto imena segmenta, obino se zadaje broj koji predstavlja identifikator segmenta. Dakle logika adresa se sastoji od dva dela:

Po pravilu, programer definie logike segmente u izvornom programu, a prevodioc na bazi toga napravi memorijske segmente automatski.

Ideja segmentacije je da se svakom procesu dodeli vie linearnih adresnih prostora koji poinju od nule i idu do nekog maksimuma. Ti prostori ili delovi procesa se nazivaju segmentima. Svaki segment predstavlja linearnu memoriju. Segmenti predstavljaju funkcionalne delove programa kao to su: kod programa, stek, heap, ali segment moe da sadri i samo jednu proceduru ili niz ili neto drugo.

Da bi OS mogao preuzeti brigu o segmentima, potrebno je da ima sledee informacije: poetna adresa segmenta, veliina (duina) segmenta, tip segmenta, bezbednosni podaci. Ove informacije se uvaju u tabeli segmenata.

Termini:

Logika adresa: odnosi se na adresu memorijske lokacije nezavisno od trenutno dodeljenog podatka u memoriji.

Relativna adresa: je poseban sluaj logike adrese gde je lokacija izraena relativno u odnosu na neku taku (obino na poatak programa)

Fizika adresa: ili apsolutna adresa je zapravo lokacija u operativnoj memoriji.

Uporeivanje stranienja i segmentacije:

ZADATAK 2.Data je sledea tabela segmenata:

SegmentBaseLength

0219600

1230014

290100

31327580

4195296

Koje fizike adrese odgovaraju sledeim logikim adresama: (a) 0,430, (b) 1,10, (c) 2,500, (d) 3,400, (e) 4,112?REENJE:

(a)219 + 430 = 649

(b)2300 + 10 = 2310

(c)illegalna referenca (premaena vrednost limit registra LENGTH)

(d)1327 + 400 = 1727

(e)illegalna referenca (premaena vrednost limit registra LENGTH)

Overlays

Da bi se omoguilo izvrenje procesa koji je vei od same fizike memorije, koristi se tehnika preklapanja (overlay). Ideja preklapanja je uvati u memoriji samo one delove programa koji su potrebni u tom trenutku. Kada drugi delova programa budu potrebni, oni e se napuniti u one delove programa u memoriji koji vie nisu potrebni. Primer za ovo demonstriraemo u sluaju dvoprolaznog asemblera. Za vreme prve faze program konstruie simboliku tabelu, a za vreme druge faze se generie kod na mainskom jeziku. U tom kontekstu, mogli bi podeliti program na kod za prolazak1 i na kod za prolazak 2, Pretpostavimo da je veliina programskih komponenti sledea:Pass1

70KB

Pass2

80KB

Simbolika tabela20KB

Zajednike rutine30KB

Kada bi se ceo program napunio u memoriju, za to bi trebalo 200KB memorije i na hipotetikom sistemu sa 150KB memorije ovaj program ne bi nikako mogao da radi. Meitim kada se izvrava prolazak 1, kod za pass2 uopte nije potreban. Zato emo da definiemo dve overlay komponente. Overlay A se sastoji od zajednikih rutina, simbolike tabele i pass1 koda, to iznosi 120KB. Overlay B se sastoji od zajednikih rutina i pass2 koda, to iznosi 110KB. Programu se mora dodati overlay drajver koji e da upravlja overlay tehnikom i pretpostavimo da on zauzima 10K. U prvoj fazi imamo overlay drajver i overlay A to zauzima 130KB i moe se izvriti u 150KB. Kada ovelay A zavri svoje, overlay drajver e napuniti overlay B preko njega. Tako da u drugoj fazi imamo overlay drajver i overlay B to zauzima 120KB i moe takoe da se izvri u 150KB. Overlay radi sporije jer dva puta uitava delove programa i ima overlay drajver, ali radi ono to drugaije ne bi bilo mogue. Overlay tehnika moe biti dosta korisna u sistemima sa ogranienim resursima. Sluaj dvoprolaznog asemblera prikazan je na slici...

Kao i kod dinamikog punjenja, overlay tehnika ne zahteva posebnu podrku operativnog sistema, ve je to stvar programera i programskog jezika. Programer treba pravilno da projektuje svoje overlay delove, ali on svakako najbolje poznaje struktruru svog programa i podataka.

ZADATAK 3.Glavni program (GP, veliine 60KB) poziva u datom redosledu sledee segmete programa: A (20KB), B (50K) i C (40KB). Segment B u jednom trenutku poziva segment D (40KB), koji opet poziva segment E (70KB). Segment C u jednom trenutku poziva segmet F (120KB).

a.Skicirati kako se za dati primer moe primeniti tehnika preklapanja (overlay)?

b.Koliko je najmanje radne memorije potrebno za izvravanje ovog programa?

c.Koliko bi memorije bilo potrebno bez primene tehnike preklapanja?

(a)overlay 1: GP+A = 60K+20K = 80K

overlay 2: GP+B+D+E= 60+50+40+70 = 220K

overlay 3: GP+C+F = 60+40+120 = 220K

(b)max (80, 220, 220) = 220K

(c)GP+A+B+C+D+E+F = 60+20+50+40+70+40+120 = 400K

Tipovi memorijskih alokacija

Glavna memorija mora smestiti i aktivni kod operativnog sistema i razliite korisnike procese. Zato je neophodno to efikasnije alocirati razliite delove memorije.

Memorija se deli na minimalno dve particije od kojih je jedna namenjena za rezidentni deo operativnog sistema (kernel space) a druga particija je dodeljena korisnikim procesima (user space). Obino, rezidentni deo operativnog sisterma zauzima donji deo memorije, a najnii deo memorije po pravilu predstavlja tabelu prekidnih rutina (interrupt vector).

Postoje dve glavne tehnike memorijske alokacije.

-kontinualna alokacija kod koje se i logiki i fiziki prostor procesa sastoje od kontinualnih adresa

-diskontinualna alokacija kod koje je logiki adresni prostor procesa kontinualan a fiziki adresni prostor diskontinualan.

Objasniemo najpre kontinualnu memorijsku alokaciju.

Kontinualna memorijska alokacija

(Contiguous Allocation)

U korisnikom adresnim prostoru, nalazi se vie procesa u isto vreme (ready queue), a naravno postoje procesi koji nastoje da uu u red ekanja, obino sa diska (input queue). Da bi proces uao u red ekanja mora da dobije potrebnu memoriju. Glavni problem kod upravljanja memorijom je kako da se alocira slobodna memorija, procesima koji su u ulaznom redu (input queue). U emi sa kontinualnom alokacijom, svaki proces dobija jedan kontinualni deo memorije.

Memorijska alokacija (MFT, MVT)

Jedan od najstarijih i najprostijih metoda za alokaciju memorije je da se cela fizika memorija podeli na vie delova, fiksne veliine i svaki deo memorije moe sadravati samo jedan proces. U ovakvoj organizaciji, stepen multiprogramiranja je jednak broju particija. Ovaj metod je korien u sistemu IBM OS/360 i nazivao se MFT (Multiprogramming with Fixed Partitions). Cela memorija se izdeli na vie delova, a proces se smeta u onaj deo koji je po veliini vei a minimalno jednak memoriji koja zahteva proces. Svi procesi se stavljaju u red ekanja (input queue) koji moe biti jedinstven za sve procese, ili se za svaku particiju memorije moe praviti poseban red ekanja. Viestruki redovi ekanja se formiraju obino za opsege veliina (Q=1K, Q=2K, Q=4K...). Kod MFT eme, mogu se dogoditi vie situacija:

ukoliko za proces koji doao na red nema dovoljno memorije, uzima se sledei manji proces iz liste

u sluaju viestrukih redova ekanja, vei broj malih procesa moe ekati u redu za male particije, dok su velike particije neiskoriene. U tom sluaju ima dovoljno memorije, ali se ne koristi.

sa jednog stanovita bolji je jedinstveni red ekanja, jer ako nema mesta u memoriji u redu ekanja za particiju koja odgovara veliina procesa, dodeljuje se vea particija, ali nikad dva procesa u particiji

obe vrste reda ekanja pate od interne fragmenatcije, a to je da se delovi memorije koji su vei od veliine procesa potpuno neiskorieni.

Metod MFT se koristio u sistemima sa grupnom obradom (batch). Za interaktivne sisteme, ovaj metod je krajnje nepogodan, jer imamo mnogo vei broj procesa koji su obino mali, a procesi imaju veoma promenljive distribucije nailaska a i veliine. MFT se vie ne koristi, a posluio je kao osnova za novu metodu MVT (Multiprogramming with Variabled Partitions). Umesto fiksnih particija, memorija se dinamiki deli i svaki slobodni kontinualni deo memorije, upljina (hole), se moe iskoristiti za smetanje procesa, naravno ako je dovoljno velika. upljine se dinamiki kreiraju i nestaju, zajedno sa procesima, mogu biti bilo gde u memoriji, mogu imati bilo koju veliinu, a sve to odgovara procesima za interaktivne sisteme. Kada proces naie u sistem, trai se upljina dovoljno velika da zadovolji proces. Sav prostor koji proces ne zauzme od cele upljine, predstavlja novu upljinu u koju se moe smestiti drugi proces.

Kod MVT imamo uvek dinamiku alokaciju i memorija se sastoji od procesa i upljina razasutih svugde po memoriji. Operativni sistem dinamiki vodi evidenciju o zauzetosti memorije. To se obavlja na vie naina:

bit mape (bit maps)

Memorija se delina delove iste veliine, a u krajnjem sluaju to su bajtovi. Svakom delu dodeljujemo po jedan bit na sledei nain:

1 oznaava da je taj deo zauzet, 0 da je slobodan (ili obrnuto). Tako dolazimo do niza nula i jedinica (bitova) koji se zove bit mapa memorije.

Pitanje: koje veliine treba da budu ovi delovi memorije ?

Ako je veliina delova 32 bita (4 bajta), onda za bit mapu koristimo 1/33 od ukupne memorije. Ako su delovi manji, bit mapa je vea (ako je veliina delova 16 bita, onda za bitnu mapu koristimo 1/17 od ukupne memorije: od 512MB ode na administraciju oko 30MB) i pretraivanje slobodne memorije (niz nula) je sporo. Ako su delovi vei, dobijamo lou iskorienost memorije: neka su delovi veliine 4KB, ako proces zauzme 1KB od nekog dela, 3KB ostaje neiskorieno, ali ne moe biti alociran od strane drugog procesa jer je formalno zauzeto.

povezane liste (linked lists)

Memorija je ili zauzeta od strane nekog procesa (P) ili je slobodna (H) hole). Povezane liste gradimo od slogova sledee strukture:

P-H-P-H....

Prvo polje sloga oznaava tip memorije: P oznaava da se radi o procesu, H da se radi o slobodnoj memoriji. Drugo polje sadri poetnu adresu dela memorije koju opisuje dati slog. Tree polje opisuju veliinu memorije, a etvrto polje sadri ukaziva na sledei slog.

Upravljanje memorijom se odvija na sledei nain:

Zauzimanje memorije: imamo proces, trai se dovoljno velika rupa u memoriji. Pretrauje se povezana lista, traimo slog tipa H (rupa) dovoljne veliine. Ako se odgovarajua H nae, umesto H se upisuju P, a eventualno se ubacuje i novi vor tipa H (ako proces ne zauzima celu rupu, ostaje neka manja rupa).

Oslobaanje memorije: ako proces A zavri sa radom, osloboa se zauzeta memorija. Tada se jednostavno stavlja H umesto P, a ako se i ispred i iza procesa A nalazi neki drugi proces (a ne slobodna memorija). Ako je ispred ili iza A postojala upljina vri se auriranje liste, jer se dobija vea upljina.

sistem udruenih parova-drugova (buddy system)

Za upravljanje memorije koristi se po jedna listu za blokove slobodne memorije veliine1, 2, 4, 8, 16, 32, 64, ... bajtova sve do ukupne veliine memorije, po stepenima dvojke. Uzmimo na primer, da imamo 1MB memorije, tada emo imati 21 listu (2^0=1 ... 2^20=1MB). Na poetku cela memorija je prazna, pa u listi za rupe od 1MB imamo jedan slog, a ostale liste su prazne.

Sada dolazi proces A veliine 70KB. Najmanja particija u koju moe stati jeste ona od 128KB (mora biti stepen od 2). Na alost, lista koja sadri particije te veliine je prazna. Zato emo particiju od 1MB razbiti na dva dela od 512KB (ovi delovi se zovu drugovi buddy), pa emo prvi razbiti na dva dela od 256KB, pa jo jednom, prvi delimo na dva dela od 128KB. U prvu particiju stavimo proces.

A(128)128256512

Sada lista od 128Kb sadri dva vora (jedan je zauzet P, a drugi je slobodan H), a liste od 256KB i 512KB sadre po jedan slobodan vor. Ovde ve vidimo nedostatak ovog sistema: za proces od 70KB zauzimamo itavu particiju od 128KB, tj. gubimo 58KB memorije (unutranja fragmentacija).

Neka sada doe proces B veliine 35KB. Potrebno je zauzeti particiju veliine 64KB. Lista za takve particije je prazna. Zato delimo prvu slobodnu particiju od 128KB na dva dela od 64KB, u jednu ubacimo proces B a druga ostaje prazna. Sada imamo po jedan vor u listama za 128KB, 256KB i 512KB i dva vora u listi za 64KB.

A(128)B(64)64256512

Novi proces C od 80KB ubacujemo tako to delimo 256KB na dva dela od 128KB, u prvi ubacimo C a drugi ostaje prazan:

A(128)B(64)64C(128)128512

Posmatrajmo sada stanje memorije: zauzeli smo 128+64+128=320KB za tri procesa ukupne veliine 70+35+80=195KB.

Drugari su susedne rupe iste veliine: A i B (da su rupe) nisu drugovi, ali to jesu npr. B (kao rupa) i rupa pored nje. Ako neki proces zavri sa radom, proverava se veliina rupe koja nastaje. Ako u susedstvu ima druga, formiramo duplo veu rupu od te dve rupe. Vano je da veliina novoformirane rupe bude neki stepen od 2, ako to nije sluaj, odustajemo od spajanja.

Algoritmi za izbor prazne particijeKada naie novi proces, njegova alokacija zavisi od trenutne slike memorije, a po pravilu postoji vie upljina koje mogu da se iskoriste. U tom kontekstu postoji vie ema za alokaciju upljina. Demonstriraemo 3 tehnike:

-(First-fit) Prvo podudaranje: Procesu se alocira prva upljina koja je dovoljno velika. Pretraivanje se odvija ili od poetka liste, ili se nastavlja prethodno pretraivanje (next fit). Pretraivanje staje kada se nae prva odgovarajua upljina bez obzira to ima i boljih reenja-upljina, ali vreme pretraivanja je minimalno, jer se ne pretrauje cela lista.

-(Best-fit) Najbolje podudaranje: Alocira se najmanja upljina koja je dovoljno velika za proces. Pretraivanje je intenzivno, pretrauju se cela lista, osim ako lista nije sreene po veliini. Kod ove tehnike, od postojee upljine, kada se smesti proces, ostaje najmanja mogua upljina, to daje ideju sa sasvim kontra orijentaciju (worst-fit).

-(Worst-fit) Najgore podudaranje: Procesu se dodeljuje najvea mogua upljina i opet se mora pretraivati cela lista. Meutim kod ove tehnike, od postojee upljine, kada se smesti proces, ostaje najvea mogua upljina koja je povoljna za smetanje drugih velikih procesa.

Simulacije pokazuju da su prvo podudaranje (first fit) i najbolje podudaranje(best fit) bolje i po performansama i po iskorienju memorije od metode najgoreg podudaranja, a to se tie prvog i najboljeg podudaranja, prvo je svakako bre, a koje je bolje diskutabilno je. Naravno sve drastino zavisi od raspodele procesa u vremenu.

MVT algoritmi pate od metode eksterne fragmentacije. Ona se manifestuje na taj nain to imamo slobodnu memoriju, ali je ne moemo iskoristiti za procese jer su ostale upljine male u odnosu na proces. Problem eksterne fragmentacije moe biti ozbiljan. Jedan o naina je da blokiramo proces, poaljemo ga na disk (swaping), oslobodimo njegovu memoriju i napravimo veu upljinu. Drugi metod koji se koristi je mnogo ozbiljniji i naziva se kompakcija memorije.

ZADATAK 4Odredite kako e (a) First fit, (b) Best fit i (c) Worst fit algoritmi za dodelu memorije dodeliti memorijske particije od 100K, 500K, 200K, 300K i 600K (navedene redom kojim se nalaze na sistemu) procesima koji zahtevaju 212K, 417K, 112K i 426K memorije.

d.Koji algoritam obezbeuje najefikasnije iskorienje memorije?

(a)First fit:PROCESMemorijaPOREENJA

212100500 (288)2003006002

417100288200300600 (183)5

112100288 (176)2003001832

4265

212K se smeta u particiju veliine 500K, pri emu ostaje prazna particija veliine 500K-212K=288K. Posle dodele, sledee particije su prazne (redom): 100K, 288K, 200K, 300K, 600K. Algoritam je obavio dva poreenja.

417K se smeta u particiju veliine 600K, pri emu ostaje prazna particija veliine 600K-417K=183K. Posle dodele, sledee particije su prazne (redom): 100K, 288K, 200K, 300K, 183K. Algoritam je obavio 5 poreenja.

112K se smeta u particiju veliine 288K, pri emu ostaje prazna particija veliine 288K-112K=176K. Posle dodele, sledee particije su prazne (redom): 100K, 176K, 200K, 300K, 183K. Algoritam je obavio dva poreenja.

Procesu koji zahteva 426K ne moe se dodeliti memorija zbog eksterne fragmentacije. Algoritam je obavio 5 poreenja.

Proces koji zahteva 426K ne moe odmah da se izvri i mora da saeka da neki drugi proces oslobodi memoriju. Obavljeno je ukupno 14 poreenja izmeu veliine memorije koju proces zahteva i slobodnih particija.(b) Best fitPROCESMemorijaPOREENJA

212100500 200300 (88)6005

417100500 (83)200886005

11210083200 (88)886005

426100838888600 (174)5

212K se smeta u particiju veliine 300K, pri emu ostaje prazna particija veliine 300K-212K=88K. Posle dodele, sledee particije su prazne (redom): 100K, 500K, 200K, 88K, 600K.

417K se smeta u particiju veliine 500K, pri emu ostaje prazna particija veliine 500K-417K=83K. Posle dodele, sledee particije su prazne (redom): 100K, 83K, 200K, 88K, 600K. Algoritam je obavio 5 poreenja.

112K se smeta u particiju veliine 200K, pri emu ostaje prazna particija veliine 200K-112K=88K. Posle dodele, sledee particije su prazne (redom): 100K, 83K, 88K, 88K, 600K. Algoritam je obavio 5 poreenja.

426K se smeta u particiju veliine 600K, pri emu ostaje prazna particija veliine 600K-426K=174K. Posle dodele, sledee particije su prazne (redom): 100K, 83K, 88K, 88K, 174K. Algoritam je obavio 5 poreenja.

Svaki proces dobija zahtevanu memoriju. Obavljeno je ukupno 20 poreenja izmeu veliine memorije koju proces zahteva i slobodnih particija.

(c) Worst fitPROCESMemorijaPOREENJA

212100500200300600 (388)5

417100500 (83)2003003885

11210083200300388 (278)5

4265

212K se smeta u particiju veliine 600K, pri emu ostaje prazna particija veliine 600K-212K=388K. Posle dodele, sledee particije su prazne (redom): 100K, 500K, 200K, 300K, 388K. Algoritam je obavio 5 poreenja.

417K se smeta u particiju veliine 500K, pri emu ostaje prazna particija veliine 500K-417K=83K. Posle dodele, sledee particije su prazne (redom): 100K, 83K, 200K, 300K, 388K. Algoritam je obavio 5 poreenja.

112K se smeta u particiju veliine 388K, pri emu ostaje prazna particija veliine 388K-112K=278K. Posle dodele, sledee particije su prazne (redom): 100K, 83K, 200K, 300K, 278K. Algoritam je obavio 5 poreenja.

Procesu koji zahteva 426K ne moe se dodeliti memorija zbog eksterne fragmentacije. Algoritam je obavio 5 poreenja.

Proces koji zahteva 426K ne moe odmah da se izvri i mora da saeka da neki drugi proces oslobodi memoriju. Obavljeno je ukupno 20 poreenja izmeu veliine memorije koju proces zahteva i slobodnih particija.(d)U ovom sluaju Best fit algoritam obezbeuje najbolje iskorienje memorije.

Fragmentacija (Fragmetation)

Imamo dve vrste fragmentacije:

Interna fragmentacija (Internal Fragmentation): alocirana memorija moe biti vea od zahtevane memorije procesa, ono to je preostalo od alocirane memorije se ne koristi za nita, sluaj MFT. Eksterna fragmentacija (External Fragmentation) ukupan memorijski prostor moe da zadovolji zahtev procesa ali nije kontinualan ve razbacan, pa se ne moe iskorititi za proces, koji zahteva kontinualan prostor.

Eksterna fragmentacija se moe smanjiti preko kompakcije memorije. Cilj kompakcije je da se ispremeta sadraj memorije kako bi se dobile vee upljine. Kompakcija nije uvek mogua. Na primer ako je relokacija programa statika u fazi prevoenja i punjenja, kompakcija nije mogua. Kompakcija je mogua ako je relokacija programa dinamika i radi se u vreme izvravanja.

Kompakcija svakako unosi degradaciju performansi sistema, jer mora da prekida procese, da ih prebacuje na swap a to unosi I/O cikluse, da ih relocira, a potom restartuje. Najprostiji algoritam za kompakciju potiskuje procese ka vrhu memorije a upljine se pojavljuju u niim delovima memorije.

Drugi nain za reenje problema externe fragmentacija je diskontinualna memorijska alokacija.

PROVERA.

a.ta je interna fragmentacija?

b.ta je eksterna fragmentacija?

c.Da li je eksterna fragmentacija karakteristina za kontinualnu ili diskontinualnu alokaciju memorije?

d.Kako se eksterna fragmentacija moe smanjiti?

(a)Unutranja (interna) fragmentacija se javlja ukoliko se procesu dodeli deo memorije (na primer, stranica) vea od memorije koju proces zahteva. Preostala memorija ostaje neiskoriena sve dok proces ne oslobodi svu memoriju koju je zauzeo.

(b)Spoljanja (eksterna) fragmentacija je karakteristina za sisteme sa kontinualnom dodelom memorije. Proces se ne moe dodeliti odreena koliinu memoriju, jer na sistemu ne postoji dovoljno veliki kontinualni memorijski blok (bez obzira to ukupna koliina slobodne memorije premauje zahteve procesa).

(c)Karakteristina je za kontinualnu alokaciju.

(d)Eksterna fragmentacija se moe smanjiti kompakcijom memorije (povremenim premetanjem sadraja memorije u cilju dobijanja veih uplljina). Kompakcija je mogua ako je relokacija programa dinamika i ako se radi u vreme izvravanja.

17