memória kezeléspeople.inf.elte.hu/kinnaai/programoz%e1s/oprendszerek/op-1-mem.pdf · cache •cpu...
TRANSCRIPT
![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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/42.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/43.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/45.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/46.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/47.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/48.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/49.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/50.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/51.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/52.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/53.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/54.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/55.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/56.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/57.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/58.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/59.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062601/5bf5cccc09d3f20a768bbb35/html5/thumbnails/60.jpg)
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