60
1 Memória kezelés

Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

Embed Size (px)

Citation preview

Page 1: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

1

Memória kezelés

Page 2: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

2

Programok, statikus linkelés• Rendszer könyvtár, mint bármelyik másik

tárgykód (object file)• Előny

– Egyszerű– Nincs verzió probléma, program és library illeszkedik

• Hátrány– Nagy bináris kód memóriában, merev lemezen– Minden programban saját library

Page 3: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

3

Programok, dinamikus linkelés• Linkelés (kapcsolat) késleltve van a végrehajtásig• Minden könyvtár (library) rutinhoz csak egy

betöltőt tartalmaz• Előny

– Egy library a merev lemezen és a memóriában• Hátrány

– Verzió ütközés• Verzió számmal elég jól kezelhető UNIX alatt• „Windows DLL Hell”

Page 4: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

4

Processzus• Egy vagy több futtatható szál• Futáshoz szükséges erőforrások

– Memória (RAM)• Program kód (text)• Adat (data)• Különböző bufferek

– Egyéb• Fájlok, disk hely, nyomtató, stb.

Page 5: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

5

Operációs rendszer néhány célja• Maximalizálja a CPU kihasználtságát• Maximalizáljuk a memória kihasználtságát• Minimalizáljuk a válaszidőt• Fontos (prioritásos) processzusokat vegye előre

• Ellentmondó célok– Ha maximalizáljuk a CPU kihasználtságát (minnél több

processzus futtatásával) növeljük a válaszidőt

Page 6: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

6

Memória gazdálkodás• Memory management• Nyilvántartja hogy mely memória foglalt illetve

szabad• Memóriát foglal a processzusok számára amikor

szükséges– Felszabadítja a memóriát végül

• Kezeli a memória hely átadást a memória és a diszk között

Page 7: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

7

Követelmények• Relokáció

– A programozó nem tudja, hogy a processzus hol lesz a memóriában amikor végrehajtódik

– Amíg egy processzus fut, lehet hogy áthelyeződik a diszkre

– A memória referenciákat át kell alakítani a kódban

Page 8: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

8

Követelmények

Page 9: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

9

Követelmények• Védelem

– Egy processzus ne érhesse el egy másik processzus adatait

– Lehetetlen abszolút címet ellenőrizni, hiszen lehet hogy a processzus áthelyeződik

– Futás közben kell ez a védelem

Page 10: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

10

Követelmények• Megosztás

– Több processzus is el tudja érni ugyanazt a memória helyet

Page 11: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

11

Követelmények• Logikai szerkezet

– A programokat modulokban írjuk– A modulokat függetlenül írhatjuk és fordíthatjuk– Különböző fokú védelemre lehet szükség (csak

olvasható, csak futtatható)• Fizikai szerkezet

– A program által igényelt memória nem biztos hogy rendelkezésre áll

– A programozó nem tudja hogy mennyi hely fog rendelkezésre állni

Page 12: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

12

Memória hierarchia

RegiszterekCache

Memória (RAM)Mágneses diszkMágneses szalag

1 nsec2 nsec10 nsec10 msec

100 sec

Tipikus elérési idő Tipikus kapacitás

< 1 KB1 MB

512 MB100 GB100 MB

Page 13: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

13

Cache

• CPU és memória között– 1 és néhány ciklus– 1000 ciklus a RAM eléréshez

• Korábban elért adatot tartalmaz– Gyorsabb elérés, mint a memórához való hozzáférés

• Hardware kezeli• Általában hierarchikus, on és off chip

CPU Regiszter Cache Memória

word block

Page 14: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

14

Memória kezelő algoritmusok• 2 fő osztály

– Mozgatják a processzusokat a memória és a diszk között

• Swapping, paging (lapozás)– És amelyek nem

• Egyszerű• PC nem használja, de telefonokban, PDA-ban használják

Page 15: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

15

Kellenek-e a bonyolult algoritmusok?

A memória növekedése nem ugyanolyan mint a processzoroké.

Mindig lesz olyan alkalmazás, mely több memóriát igényel.

Lásd multimédia

Page 16: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

16

Monoprogramozás,csere és lapozás nélkül

Operációs Rendszer,

a RAM-ban

Felhasználóiprogram

0

0xFFFOperációs Rendszer,

a ROM-banFelhasználói

program

Operációs Rendszer,

a RAM-ban

Felhasználóiprogram

Eszköz meghajtó,a ROM-ban

Régi nagyszámítógesrendszerek,ma már ritka

Kézi számítógépek,beágyazott rendszerek

MS-DOS

Page 17: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

17

Monoprogramozás• OK, ha

– csak egy processzust kell futtatni– a szükséges memória egyenlő a rendelkezésre álló

memóriával• Egyébként

– Rossz CPU kihasználtság ha I/O-ra kell várni– Rossz memória kihasználtság ha különböző munkák

vannak

Page 18: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

18

Megoldás• Osszuk fel a memóriát futtassunk több processzust

– Multiprogramozás, multitasking

Page 19: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

19

Hogyan osszuk fel a memóriát?• Egyik megoldás:

– Osszuk fel a memóriát egyenlő részekre, partíciókra

– Ha egy processzus elfér akkor bármelyik részbe betölthető

– Ha a teljes memóriánál kisebb de egy résznél nagyobb nem futhat

– A kihasználatlan részeket elvesztegetjük

• Belső töredezettség (fragmented)

Processzus E

Processzus D

Processzus B

Processzus A

Processzus C

Page 20: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

20

Változó méretű, de rögzített partíciók• A memória partíciókhoz

processzus sorok (queue) tartoznak

• Egy processzus a legkisebb, de a processzusnál nagyobb méretű partícióba kerül

Operációsrendszer

Page 21: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

21

Változó méretű, de rögzített partíciók• Probléma

– Bizonyos partíciókat egyáltalán nem használunk

– Például: • kis processzusokat használunk,

de csak nagy partíciók állnak rendelkezésre

• hosszú lesz a várakozás

Operációsrendszer

Page 22: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

22

Változó méretű, de rögzített partíciók• Egy sor

– Ha egy partíció kiürül, akkor az első processzus amelyik belefér betöltődik

• Akár kis processzus nagy partícióba

– Növekszik a belső töredezettség (fragmented)

Operációsrendszer

Page 23: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

23

Változó méretű, de rögzített partíciók• Másik stratégia

– Az egész sorból kiválasztjuk azt a legnagyobb processzust amelyik belefér a partícióba

• Hátrányosan kezeli a kis munkákat, pedig a kis munkák általában az interaktívak

– Egy kis partíció az interaktív munkáknak

– Egyetlen munka sem mellőzhető k-nál többször

• OS/360 IBM gépek, ma már nem használják

Operációsrendszer

Page 24: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

24

Dinamikus méretű partíciók• A partíciók változó méretűek• A processzus pontosan annyi memóriát kap

amennyit igényel– Feltételezzük, hogy a processzus tudja mennyi kell

Page 25: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

25

Dinamikus méretű partíciók

Operációsrendszer 8M

56M

Operációsrendszer 8M

36M

Processzus 1 20M

Operációsrendszer 8M

Processzus 1 20M

Processzus 2 14M

22M

Page 26: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

26

Dinamikus méretű partíciók

Operációsrendszer 8M

4M

Processzus 1 20M

Processzus 2 14M

Processzus 3 18M

Operációsrendszer 8M

4M

Processzus 1 20M

14M

Processzus 3 18M

Operációsrendszer 8M

4M

Processzus 1 20M

8M

Processzus 3 18M

Processzus 4

6M

Page 27: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

27

Dinamikus méretű partíciók

Operációsrendszer 8M

4M

20M

8M

Processzus 3 18M

Processzus 4

6M

Operációsrendszer 8M

4M

14M

8M

Processzus 3 18M

Processzus 4

6M

Processzus 5

6M

Processzus 5 14M

Hova???

Page 28: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

28

Töredezettség• Külső töredezettség

– A lefoglalt memóriához képesti külső részeket vesztegetünk el

– Összmemória lehet hogy elég, de szét van szórva– Memóriatömörítés használható

• Belső töredezettség– A lefoglalt memórián belüli részt vesztegetünk el

Page 29: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

29

Több probléma is van• Egy processzusnak mennyi memóriát foglaljon?

– Ha rögzített a méret, akkor nem gond– Mi van ha növekszik a memória igény

• Ha a processzus mellett van hely, nem gond• Elmozgathatja a processzust ahol van hely

• Melyik szabad helyhez rendelje a processzust?

Page 30: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

30

Memóriakezelés láncolt listával• Láncolt listába (linked list) fűzzük a szabad és

foglalt memória szegmenseket– Egy elem: cím, méret– A címek növekvő sorrendjében

• Így könnyebb összevonni a szomszédos lyukakat

CímMéretMutató

CímMéretMutató

CímMéretMutató

CímMéretMutató

Page 31: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

31

Memóriafoglalási stratégiák• First-fit

– Addig keres a szegmensek listájában, amíg meg nem találja az első megfelelő méretű lyukat

– A leggyorsabb, a lehető legkevesebbet keres– Nagy a külső töredezettség

• Sok kihasználatlan lyuk a lista elején– Több nagy blokkot hagy a memória végén

Page 32: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

32

Memóriafoglalási stratégiák• Next-fit

– First-fit egy változata, de a keresés, az utoljára sikeresen lefoglalt helytől kezdődik

– Bays bizonyította, hogy rosszabb teljesítményű, mint a first-fit

Page 33: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

33

Memóriafoglalási stratégiák• Best-fit

– Az egész listát végigkeresi és a legkisebb alkalmas lyukat választja

– A first-fit és next-fit -nél több memóriát veszteget el, mivel kicsi használhatatlan lyukakat képes csinálni

Page 34: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

34

Memóriafoglalási stratégiák

Utolsófoglalás

lefoglalt

szabad

first-fit

best-fit

next-fit

előtte utána

16 Mbytefoglalása esetén

Page 35: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

35

Memóriafoglalási stratégiák• Worst-fit

– Ha nem akarunk sok kis lyukat választhatjuk a legrosszabb, legnagyobb lyukat

– Így a maradék lyuk is nagy lesz– Megmutatták, hogy az előzőeknél rosszabb

Page 36: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

36

Memóriafoglalási stratégiák• Előző négy algoritmus gyorsítható

– Ha külön listát tartunk fel a lyukaknak• Nem kell végigkeresni a processzusokat is• A probléma

– A foglalásnál be kell illeszteni a listába– A felszabadításnál ki kell venni a listából

– A lyukak listája lehet nagyság szerint is rendezve• Ekkor a best-fit gyorsabb lesz

Page 37: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

37

Memóriafoglalási stratégiák• Quick-fit

– A leggyakrabban kért méretekhez külön lyuklistát készítünk

– Gyorsan talál megfelelő lyukat– Nehéz ellenőrizni, hogy szomszédos lyukkal

összevonható-e

Page 38: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

38

Memóriafoglalási stratégiák• Összefoglalva

– First-fit és next-fit a legjobb módszerek, a többihez képest

– Ritkán használják ezeket manapság– Például a Buddy rendszert használják

Page 39: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

39

Buddy rendszer• Lefoglalandó memória mérete 2 többszöröse

– 2x

• Dönteni kell– Felső határról: pl 2000K memória esetén xmax=10,

ekkor maximum 210=1024K memória foglalható egyszerre, a többi (976K) csak kis darabokban

– Alsó határról: legkisebb lefoglalható egység• Kis külső töredezettséget eredményez• Belső töredezettsége viszont nagy lehet

Page 40: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

40

Buddy rendszerxmin=6 26=64K, xmax=10 210=1024K

1M memória áll rendelkezésre

Page 41: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

41

Buddy rendszer, fa szerkezet

Page 42: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

42

Slab foglalási rendszer• Solaris, Linux használja• Jeff Bonwick, SunOS• Alapötlet

– Elég sok memória kell bizonyos fix méretű adatokhoz (objektumokhoz)

• File leírók, mutexek, szemaforok, stb

– Az objektum inicializálásához szükséges idő több mint a foglaláshoz vagy felszabadításhoz szükséges idő

– Így a memóriát nem kell felszabadítani, hanem az inicializált formájában tartsuk meg

Page 43: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

43

Slab foglalási rendszer• Cache lista: kétszer kapcsolt lista• Cache: három, kétszer kapcsolt lista

– Teljesen foglalt „slab”-ek listája– Részben foglalt slab-ek listája– Üres slab-ek listája

• Slab: – folytonos memória darab– azonos méretű objektumok csoportja

Page 44: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

44

Slab foglalási rendszer

Page 45: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

45

Slab foglalási rendszer• Quick-fit -hez hasonló, mert azonos méretű

objektumokat tartalmaz egy cache• Memória felszabadítás könnyű

– Az üres slab listából lehet felszabadítani• Memória foglalás könnyű

– A slab-ben levő memóriát használjuk• A külső töredezettség kicsi• Belső töredezettség minimális

– Az objektum éppen megfellelő méretű– Slab mérettel befolyásolható

Page 46: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

46

Memóriakezelés bittérképpel• Foglalt és szabad memóriát karban kell tartani

– Láncolt lista– Bittérkép

• 0 : az egység szabad• 1 : az egység foglalt

Page 47: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

47

Memóriakezelés bittérképpel• Allokációs egység mérete fontos

– Allokációs egység kicsi >> nagy bittérkép– Allokációs egység nagy >> nagy lehet a belső

töredezettség• Általában jól használható• A fő probléma a keresés

– n darab összefüggő 0 bitet kell keresnie– Mivel átlóghat szóhatáron, nem egyszerű!!!– Például: ha 5 memória egység kell a processzusnak

1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1

Page 48: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

48

Memória tömörítés• Csökkenthető a

külső töredezettség– Csak ha a

processzusok áthelyezhetők

– Általában hardweres támogatást igényel

Processzus E

Processzus D

Processzus B

Processzus A

Processzus E

Processzus D

Processzus B

Processzus A

Page 49: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

49

Relokáció• Logikai cím

– A programon belüli hely• Amikor a program fut, egy

valóságos fizikai cím kellene

• A logikai címeket mikor rendeljük fizikai címhez?

Process Control Block

Program

Adat

Verem

Page 50: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

50

Relokáció• Utasítások és adatok a memóriához rendelése

– Fordítási időben• Memória hely előre ismert, abszolút címet lehet generálni

– Betöltési időben• Áthelyezhető kód kell• A betöltő (loader) végzi a hozzárendelést

– Végrehajtási időben• Áthelyezhető kód, melynek futás közben is változhat a helye• Hardware támogatás kell, bázis és limit regiszter

Page 51: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

51

Relokáció

Page 52: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

52

Relokáció, futási időben• Amikor a program betöltődik meg kell határozni

az aktuális (abszolút) memória címet• A diszkre kiírás és visszaolvasás (swap) miatt is

megváltozhat a memória cím• Memória tömörítés is megváltoztathatja a

memória címet

Page 53: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

53

Relokáció

Bázis regiszter Process Control Block

Program

Adat

Verem

+

<Határ regiszterAbszolút cím

Relatív cím

Megszakítás az op. rsz. -nek,címzési hiba

Page 54: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

54

Relokáció• Bázis regiszter

– A processzus kezdő címe• Limit regiszter

– A processzus végének címe• Amikor egy processzus betöltődik, a regiszterek

megfelelő értéket kapnak

Page 55: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

55

Relokáció• A bázis regiszter értékét a relatív címhez adjuk

hozzá, hogy egy abszolút memória címet kapjunk• Az eredmény címet összehasonlítjuk a limit

regiszterrel– Ha az érték nincs határon belül megszakítás

generálódik, a hiba kezeléséhez

Page 56: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

56

Relokáció• Hátrányok

– A fizikai memória folyamatos kell legyen– A teljes processzusnak a memóriában kell lennie

Page 57: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

57

Eddig feltételeztük, hogy a processzus mérete kisebb mint a memória

• Mi van ha nagyobb a program mint a memória?

Page 58: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

58

Overlay• Csak azokat az utasításokat és adatokat tartjuk a

memóriában melyekre szükség van• Felhasználó implementálja

– Nincs szükség operációs rendszer támogatásra• A program tervezése overlay-el nagyon komplex

Page 59: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

59

Overlay, két fázisú fordítóSzimbólum

tábla

Közösrutinok

Overlay drive

Pass 1 Pass 2

Page 60: Memória kezeléspeople.inf.elte.hu/kinnaai/programoz%E1s/oprendszerek/op-1-mem.pdf · Cache •CPU és memória között –1 és néhány ciklus –1000 ciklus a RAM eléréshez

60

Virtuális memória• Az egyszerű módszerekkel kapcsolatos problémák

elkerülésére• Két stratégia

– Lapozás (paging)– Szegmentálás (segmentation)

• A lapozás a domináns stratégia manapság• Hibrid rendszer is van