Operativni sistemi

45
Operativni sistemi Upravljanje memorijom

description

Operativni sistemi. Upravljanje memorijom. Upravljanje memorijom. U jednoprogramskom sistemu, glavna memorija se deli na dva dela: jedan deo za operativni sistem (kernel), a drugi za korisni čki program koji se trenutno izvršava (primer: RAF_OS). - PowerPoint PPT Presentation

Transcript of Operativni sistemi

Page 1: Operativni sistemi

Operativni sistemi

Upravljanje memorijom

Page 2: Operativni sistemi

• U jednoprogramskom sistemu, glavna memorija se deli na dva dela: jedan deo za operativni sistem (kernel), a drugi za korisnički program koji se trenutno izvršava (primer: RAF_OS).

• U multiprogramskom sistemu, korisnički deo memorije mora da se dalje podeli, da bi prihvatio više procesa koji će uskoro biti u stanju spremnosti na izvršenje.

• Zadatak te dalje podele dinamički izvršava operativni sistem, a to je poznato kao upravljanje memorijom.

• Unutar procesa, dinamičko dodeljivanje memorije najčešće se vrši upotrebom bibliotečkih funkcija (npr. malloc/free iz C biblioteke stdlib) koje mogu da budu implementirane na razne načine.

Upravljanje memorijom

Page 3: Operativni sistemi

Memorijska adresa

• Logička– Referenca na memorijsku lokaciju nezavisno od toga gde se

podaci zaista nalaze u memoriji.

– Logička adresa mora da bude prevedena u fizičku adresu najkasnije u trenutku pristupa podacima.

• Relativna– Adresa izražena kao relativna u odnosu na neku poznatu tačku

(npr. na početak programa).

• Fizička– Apsolutna adresa stvarne lokacije u operativnoj memoriji.

Page 4: Operativni sistemi

Zaštita

• Proces ne sme da pristupi memorijskoj lokaciji nekog drugog procesa bez posebne dozvole.

• Nemogućnost provere apsolutnih adresa u vreme kompajliranja.

• Ove adrese moraju da budu proverene u vreme izvršenja.

• Zahteve za zaštitu memorije mora da ispuni hardver, jer operativni sitem ne može da predvidi sve memorijske reference koje je program u stanju da napravi.

Page 5: Operativni sistemi

Deljenje memorije

• Više procesa može istovremeno da pristupi istom delu memorije.

• Bolje je dozvoliti svakom procesu pristup istoj kopiji programa nego imati zasebne kopije za svaki proces.

Page 6: Operativni sistemi

Logička organizacija

• Programi se pišu kao moduli.• Moduli mogu da se pišu i kompajliraju nezavisno.• Modulima se daju različiti stepeni zašite (read-only,

execute-only).• Procesi mogu međusobno da dele module.

Page 7: Operativni sistemi

Fizička organizacija

• Količina memorije koja je na raspolaganju programu i njegovom podacima može da bude nedovoljna.

• Preklapanje (overlay) omogućuje različitim modulima da koriste iste memorijske regione.

• Preklapanje mora da obezbedi programer, ali on ne zna koliko će memorije imati na raspolaganju.

Page 8: Operativni sistemi

Dodeljivanje kontinualne memorije

• Deljenje na fiksne particije.• Deljenje na particije promenljive veličine (dinamičko

deljenje na particije).

Page 9: Operativni sistemi

Deljenje na fiksne particije

• Deljenje na particije iste veličine.• Svaki proces koji je po veličini isti ili je manji od veličine

particije, može da se učita u bilo koju particiju.• Ukoliko su sve particije zauzete, operativni sistem može da

prebaci neki proces na disk (swap-out).• Program može da bude veći od veličine particije. U tom slučaju

mora da se koristi preklapanje.• Upotreba operativne memorije je neefikasna. Svaki program,

bez obzira koliko mali bio, zauzima čitavu particiju. Ostatak memorije u toj particiji je neiskorišćen. To je interna fragmentacija.

Page 10: Operativni sistemi

Primer fiksnih particija

Page 11: Operativni sistemi

Algoritam za smeštanje

• Particije iste veličine– Nije bitno koja se particija koristi za smeštanje procesa.

• Particije različite veličine– Smeštanje u najmanju particiju u koju proces može da stane.– Svaka particija ima red čekanja.– Memorija se dodeljuje tako da se minimizuje neiskorišćen prostor

unutar particije.

Page 12: Operativni sistemi

Dodeljivanje memorije fiksnim particijama

Page 13: Operativni sistemi

Dinamičko deljenje na particije

• Particije su različite veličine koja je poznata tek tokom učitavanja procesa.

• Procesu se dodeljuje tačno onoliko memorije koliko mu je potrebno.

• Ukoliko se proces prebaci na disk a na njegovo mesto učita novi, manji proces, nastaje rupa u memoriji. Ovo se naziva eksterna fragmentacija.

• S vremena na vreme, mora da se vrši sažimanje (compaction) zauzetih particija. Tako se pravi kompaktan blok zauzete memorije. Sve rupe se pojavljuju na kraju memorije kao slobodan prostor.

Page 14: Operativni sistemi

Efekat dinamičkog deljenja

Page 15: Operativni sistemi

Efekat dinamičkog deljenja ...

Page 16: Operativni sistemi

Algoritmi za izbor prazne particije

• Bit-mapa• Ulančana lista

– First-fit– Next-fit– Best-fit– Worst-fit

• Partnerski sistem (Buddy System)– Binarni sistem (proučićemo samo ovaj, ostali su slični)– Fibonacci-jev sistem– Težinski sistem

Page 17: Operativni sistemi

Bit-mapa

• Svaki blok u memoriji predstavljen je jednim bitom u bit-mapi, pri čemu 0 znači slobodan, a 1 znači zauzet.

• Glavni problem nastaje kada je potrebno učitati k jedinica u memoriju jer je potrebno izvršiti pretraživanje i naći k uzastopnih 0. Ovo je spora operacija i zato se bit-mapa retko koristi.

a)

b)

8 16 24A B C D E

a) Deo memorije sa 5 procesa (A – E) i tri rupe. Crtice označavaju jednice memorije za dodelu. Osenčene oblasti (0 u bit-mapi) su slobodne.

b) Odgovarajuća bit-mapa.

Page 18: Operativni sistemi

Ulančana lista

a)

b)

8 16 24

DodeljenoDužinaSlobodno Početna

adresa

a) Deo memorijeb) Odgovarajuća ulančana lista

A = dodeljena memorija

F = slobodna memorija

Page 19: Operativni sistemi

Ulančana lista: First-fit

• Pretražuje se memorija od početka i bira se prvi blok i koji može da stane željeni proces (rupa).

• Najbrži algoritam.• Na početku memorije se obično već nalazi određeni broj

procesa, koji, sve jedno, moraju da se pretražuju da bi se našao prvi odgovarajući slobodan blok.

Page 20: Operativni sistemi

Ulančana lista: Next-fit

• Pretražuje se memorija počev od poslednje upotrebljene lokacije.

• Često dodeljuje blok na kraju memorije, gde se inače nalazi najveći slobodni blok.

• Njaveći slobodan blok podeljen je na manje blokove.• Podrebno je sažimanje da bi se ponovo dobio veliki blok na

kraju memorije.

Page 21: Operativni sistemi

Ulančana lista: Best-fit

• Operativni sistem bira blok koji je po veličini najbliži onom koji se zahteva

• Algoritam sa najlošijim performansama• Dobra strana: mala fragmentacija• Loša strana: često sažimanje memorije

Page 22: Operativni sistemi

Ulančana lista: Worst-fit

• Radi slično kao i Best-fit.• Razlika je u tome što Best-fit traži najmanju rupu, dok

Worst-fit bira najveću raspoloživu rupu.• Ova strategija i nakon upotrebe ostavlja za sobom veliku

rupu koja može da se iskoristi prilikom sledećeg dodeljivanja. Best-fit obično ostavlja malu rupu, što dovodi do fragmentacije i potrebe za sažimanjem.

Page 23: Operativni sistemi

Partnerski sistem (Buddy System)

• I fiksno i dinamičko deljenje na particije ima svoje nedostatke.

• Fiksno deljenje ograničava broj aktivnih procesa i može neefikasno da koristi prostor ako je slaba podudarnost između veličina raspoloživih particija i procesa.

• Dinamičko deljenje na particije je složenije za održavanje i obuhvata dodatno opterećenje zbog sažimanja.

Page 24: Operativni sistemi

Partnerski sistem (Buddy System)

• Kompromis: Binarni partnerski sistem (Binary Buddy System).– Ceo memorisjki prostor se tretira kao jedinstven blok veličine 2U.– Ako je zahtev za delom memorije takav da je 2U-1 < zahtev <= 2U,

dodeljuje se ceo blok.– U suprotnom, blok se deli na dva identična – partnerska dela

(buddies).– Algoritam se nastavlja sve dok se ne generiše najmanji blok koji je

veći ili jednak zahtevu.

Videti primer: http://os.raf.rs/Primeri/buddy.c

Page 25: Operativni sistemi

Primer partnerskog sistema

Page 26: Operativni sistemi

Binarni partnerski sistem

nivo 0

nivo 1

. . .

← n

ivoi

pod

ele

Page 27: Operativni sistemi

Dodeljivanje diskontinualne memorije

• Operativna memorija koja se dodeljuje procesu ne mora da se sastoji od kontinualnog niza fizičkih adresa!

• Segmentacija• Straničenje• Potrebna nam je podrška hardvera (procesora).

Page 28: Operativni sistemi

Straničenje

• Linearni adresni prostor i adresni prostor fizički prisutne memorije delimo na zamišljene delove iste veličine.

• U linearnom prostoru ove delove nazivano stranice (pages), a u fizičkom adresnom prostoru nazivamo ih okviri (frames).

• Bilo koja stranica može da se smesti u bilo koji okvir fizičke memorije, jer su iste veličine.

• Sada je potrebno samo uspostaviti vezu između stranica i okvira u koje se te stranice smeštaju (tabela stranica – okvir).

• Ova veza se prilikom adresiranja koristi za translaciju linearne adrese u adresu fizički prisutne memorije.

• Translaciju obavlja hardver – jednica za upravljanje memorijom (Memory Management Unit – MMU).

Napomena: Često se u svakodnevnom govoru za okvir fizičke memorije koristi termin stranica.

Page 29: Operativni sistemi

Straničenje

00

00

02

23

03

C1

A3

...

...

...

...

793400A0

793400A1

793400A2

793400A3

793400A4

793400A5

793400A6

793400A7

12FC00AA

12FC00AB

12FC00AC

12FC00AD

address dataread write

7934

00A4

037934

00A0

4D 4D

12FC00AE

12FC00AF

Bazna adresa tabele stranica

12FC00AC

Stranica Okvir

...

79340xxx

......

...

3621Axxx

Tabela stranica

CPU

MMU

Procesor

c3621A0A4

c793400A4

cTranslacija na osnovu tabele stranica

c3621A0A0

c793400A0

cTranslacija na osnovu tabele stranica

... ...

20 bitova za pronalaženje stranice12 bitova za adresiranje unutar stranice. Ukupno 32 adresnih bitova.xxx su kontrolni indikatori (flags).

Primer:

Page 30: Operativni sistemi

Veličina stranice

• Glavna motivacija za upotrebu manjih stranica je ušteda u memoriji izbegavanjem interne fragmentacije (prosečna interna fragmentacija iznosi 1,5 veličina stranice). Ovo se može zanemariti kod računara sa stotinama megabajta memorije i veličinom stranice od 4 KB.

• Veličina tabele stranica je obrnuto proporcionalna veličini stranice.• Zbog efikasnijeg pretraživanja tabela, stranično adresiranje vrši se

hijerarhijski, u dva nivoa, upotrebom direktorijuma tabela stranica i samih tabela stranica.

• Cena za ovo je dvostruki pristup memoriji radi izračunavanja adrese, ali i to se rešava adekvatnim keširanjem.

• Dobra stvar je da direktorijum staje u jednu stranicu. Isto važi i za svaku od tabela stranica, što znatno pojednostavljuje manipulaciju.

Page 31: Operativni sistemi

Aliasing

Stranični direktorijum

Tabele stranicaLinearni prostor Fizički prostor

A

B

C

D

Aliasing na nivou tabele stranica -senčenje 4MB (Shadowing)

Aliasing na nivou stranice 4KB

Page 32: Operativni sistemi

Stranične greške

• Iako se na osnovu imena dolazi do drugačijeg zaključa, ovo nisu greške već izuzeci doji doprinose normalnom funkcionisanju sistema.

• Postoje dva tipa straničnih grešaka: Page Fault i Protection Fault– Minor Page Fault. Stranica je učitana u memoriju, ali odgovarajući bit u

njenom deskriptoru još uvek nije postavljen na vrednost 1. Ovo može da se dogodi kod deljene memorije, kada je neki drugi proces učitao stranicu.

– Major Page Fault *. Stranica nije učitana u memoriju. Ovo je osnovni mehanizam za implementaciju virtuelne memorije.

– Invalid Page Fault. Referenciranje upotrebom NULL pointera. Operativni sistem preslikava delove fizičke memorije za hvatanje ove grešeke. Npr. Windows koristi deo memorije od 64KB na početku adresnog prostora isključivo za “hvatanje” NULL pointera.

• Protection Fault nastaje kada proces pokuša pristup stanici koja nije translirana u njegov adresni prostor, ili pokuša upis u stranicu koja je Read-Only, ili pristupa stranici koja ima viši nivo privilegije.

* Windows (npr. Vista, u Reliability and Performance Monitor) to zove Hard Fault

Page 33: Operativni sistemi

Copy on Write

• Protection Fault nije greška ukoliko se koristi kao mehanizam za implementaciju Copy on Write (COW), memorijske tehnike koju koristi većina današnjih operativnih sistema.

Proces 1 Proces 2Fizička memorija

Stranica 1

Stranica 2

Stranica 3

Originalni podaci Originalni podaci

Stranice označene kao Read-Only

Page 34: Operativni sistemi

Copy on Write

• Proces 1 i Proces 2 koriste aliasing sve dok, npr. Proces 2 ne pokuša upis u Stranicu 2. Tada se gereniše Protection Fault. Rutina za obradu ovog izuzetka modifikuje odgovarajuću tabelu stranica (nema više aliasinga), a zatim se ponovo izvršava instrukcija koja je to izazvala.

Proces 1 Proces 2Fizička memorija

Originalni podaci Modifikovani podaci

Stranica 1

Stranica 2

Stranica 3

Kopija stranice 2

Page 35: Operativni sistemi

Copy on Write

• Unix i Linux sistemi na ovaj način implemetiraju fork ( ).• Windows nema fork (sem kada se koristi Posix/Interix podsistem),

ali i on koristi Copy on Write kao mehanizam uštede fizičke memorije i smanjivanja broja nepotrebnih kopiranja.

• Kod operativnog sistema Windows, broj straničnih grešaka u sekundi koje se koriste za Copy on Write može se naći u (WMI) Performance Monitor → Performance Counter→ Memory →Write Copies/sec.

Page 36: Operativni sistemi

Anuliranje stranica

• Anuliranje memorije: Upisivanje nula u memorijske lokacije.• Podaci u fizičkoj memoriji koju je koristio neki proces moraju da se

anuliraju pre dodeljivanja te memorije drugom procesu.• malloc ( ) vraća pointer na anuliranu memoriju.• Razlog je bezbednost (privatnost) procesa. Podaci nekog procesa

ne bi smeli da budu dostupni drugom procesu, sem ako se to ne radi namerno, radi međuprocesne komunikacije.

• Anuliranje može da se radi na zahtev ili da to radi neki pozadinski proces.

• Stranica se dodeli procesu ali se označi kao nevažeća• Prilikom pokušaja čitanja, nastaje greška stranice. Rutina za obradu

greške upisuje nule u sve lokacije stranice.

Page 37: Operativni sistemi

Straničenje na zahtev

• Precizniji naziv za staničenje na zahtev (Demand Paging) mogao bi da bude “zamena stranice usled (stranične) greške”.

• Pokušaj adresiranja stranice koja nije prisutna generiše grešku.• Ovaj izuzetak mora da poseduje svoju stavku u IDT.• Rutina za obradu, na osnovu kôdne oznake greške koju uzima sa

steka, određuje zbog čega je nastala greška. Pretpostavimo da je u pitanju Major Page Fault.

• Rutina za obradu greške proverava da li je linearna adresa ispravna (da li je translacija dozvoljena i da li je moguća translacija u fizičku adresu). Ako nije, procesu se šalje signal ili poruka, nakon čega se on zaustavlja (“ubija”) i o tome se ispisuje poruka*.

* Može da bude i Unix Kernel Panic ili Windows BSOD

Page 38: Operativni sistemi

Straničenje na zahtev

• Ako je adresa ispravna, rutina proverava da li ima slobodnih okvira u fizičkoj memoriji. Ako nema, primenjuje neki od algoritama zamene*.

• Ukoliko izabrani okvir sadrži prljavu stranicu, on se označava kao zauzet (In Transition), kako ga neki drugi proces u međuvremenu ne bi koristio. Ako je stranica čista, njen okvir odmah može da se koristi.

• Sledi blokirajući sistemski poziv rutine za upis sadržaja okvira na disk.

• U deskriptor stranice koja je izazvala izuzetak kopira se adresa izabranog okvira, u stari deskriptor P=0 (nije prisutna), a u ostatak starog deskriptora lokacija stare stranice na disku.

* Izlazi iz okvira ovog kursa

Page 39: Operativni sistemi

Straničenje na zahtev

• Tekući proces se stavlja u blokirano stanje čekanja na završetak disk operacije. U međuvremenu se izvršava neki drugi proces.

• Po završetku disk operacije upisivanja stranice, blokirani proces se aktivira, a u deskriptor se upisuje da je stranica čista. Okvir sada može da se koristi za učitavanje nove stranice.

• Tražena stranica se pronalazi na disku.• Ponovo se koristi blokirajući sistemski poziv za učitavanje sa diska,

tokom koga proces ponovo blokira, a neki drugi se izvršava.• Kada se završi učitavanje stranice, ažurira se odgovarajuća tabela

stranica, a okvir se označava kao Normal.• Programski brojač na steku ponovo se postavlja na instrukciju koja

je napravila Major Page Fault.• Proces se prebacuje u stanje spreman. • Nastavalja se izvršavanje rutine za obradu stranične greške, koja se

na svom izlazu vraća procesu kao da se greška nije ni dogodila.

Page 40: Operativni sistemi

Virtuelna memorija

Linearni prostor Fizički prostor

Kodni segment

Data segment

Kôd

Podaci

Ne koristi se

Ne koristi se

Direktno preslikavanje

malloc

Data segment

?

Page 41: Operativni sistemi

Virtuelna memorija

Linearni prostor Fizički prostorTabela stranica

Kodni segment

Data segment

0

P=0 (nije prisutna)

Pronaći stranicu koja ima fizički okvir, ali npr. nije dugo korišćena

Sadržaj se snima na disk

Page 42: Operativni sistemi

Virtuelna memorija

Linearni prostor Fizički prostorTabela stranica

Kodni segment

Data segment

Kopira se adresa okvira iz deskriptora pronađene stranice, a na njeno meto se upisuje adresa stare stranice na disku.

0

1

Page 43: Operativni sistemi

Virtuelna memorija

Linearni prostor Fizički prostorTabela stranica

Kodni segment

Data segment

Šta se događa kada je ponovo potreban prethodni sadržaj okvira?

0

1

Učitava se sa diska

Page 44: Operativni sistemi

Virtuelna memorija

Linearni prostor Fizički prostorTabela stranica

Kodni segment

Data segment

0

Kopira se adresa okvira iz deskriptora stranice koja više nije potrebna

1

Page 45: Operativni sistemi

Virtuelna memorija

• Korišćenjem disk prostora na ovaj način, svakom procesu se može dodeliti onoliko memorije koliko mu je potrebno, bez obzira na stvarnu veličinu fizičke memorije.

• Zato se to zove virtuelna memorija.• Svaki proces “misli” da raspolaže sa kompletnim linearnim adresnim

prostorom.• U virtuelnoj memoriji može se nalaziti veliki broj ovakvih procesa.• Pitanje: Pod pretpostavkom da procesor adresira virtuelnu i fizičku

memoriju preko adresne magistrale iste širine, da li virtuelna adresa može da bude veća od veličine linearnog adresnog prostora?

• Pitanje: Da li veličina procesa može da bude veća od celokupne fizičke memorije?