Programok, statikus linkelés



Hasonló dokumentumok
Processzus. Operációs rendszerek MINB240. Memória gazdálkodás. Operációs rendszer néhány célja előadás Memóriakezelés

8. Memória management

Operációs rendszerek III.

Dr. Illés Zoltán

Memóriakezelés (Memory management)

Fábián Zoltán Hálózatok elmélet

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Operációs rendszerek. Az NT memóriakezelése

Operációs rendszerek. Az NT folyamatok kezelése

Számítógépek felépítése

Programozás alapjai. 10. előadás

Máté: Számítógép architektúrák

A számítógép egységei

Számítógép felépítése

Bevitel-Kivitel. Eddig a számítógép agyáról volt szó. Szükség van eszközökre. Processzusok, memória, stb

Hatékony memóriakezelési technikák. Smidla József Operációkutatási Laboratórium január 16.

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Operációs rendszerek. UNIX/Linux fájlrendszerek

Problémák. Lehet hogy a program nem fér be a memóriába Mozgatás diszkre és vissza A programok lokalitásának elve

386 processzor címzés

Operációs rendszerek MINB240

OPERÁCIÓS RENDSZEREK I. BEVEZETÉS Koczka Ferenc -

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

Operációs rendszerek Memóriakezelés 1.1

Fájl rendszer (implementáció) Fájl rendszer struktúra Allokációs módszerek Szabad hely kezelése Directory implementáció Helyreállítás

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek oldal LINUX

Memóriák - tárak. Memória. Kapacitás Ár. Sebesség. Háttértár. (felejtő) (nem felejtő)

Operációs Rendszerek II. 5. előadás

12. Másodlagos tár szerkezet

Operációs Rendszerek II. Első verzió: 2009/2010. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Szenzorhálózatok programfejlesztési kérdései. Orosz György

OPERÁCIÓS RENDSZEREK. Elmélet

Operációs rendszerek II. jegyzet

Szegmentálás. Memória kezelési stratégia mely a felhasználó nézőpontját támogatja Például:

Számítógép architektúrák

Matematikai és Informatikai Intézet. 4. Folyamatok

A PC története. Informatika alapjai-9 Személyi számítógép (PC) 1/12. (Personal computer - From Wikipedia, the free encyclopedia)

Számítógépes alapismeretek

Tartalomjegyzék. Előszó... 10

Programozás alapjai Bevezetés

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

Bevezetés az informatikába

Dr. Schuster György október 14.

Utolsó módosítás:

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

A L I N U X f e l é p í t é s e

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)

Nem biztos, hogy mindenhol helytáll, helyenként hiányos, de az eddigi kérdések össze vannak gyűjtve őszi félév első zhval bezárólag.

Számítógép-rendszerek fontos jellemzői (Hardver és Szoftver):

1. MODUL - ÁLTALÁNOS FOGALMAK

(kernel3d vizualizáció: kernel245_graph.mpg)

Iman 3.0 szoftverdokumentáció

Adatszerkezetek 2. Dr. Iványi Péter

Operációs Rendszerek II. 4. előadás

9. Virtuális memória kezelés

GPU Lab. 5. fejezet. A C++ fordítási modellje. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

Térinformatika. Térinformatika. GIS alkalmazói szintek. Rendszer. GIS funkcionális vázlata. vezetői szintek

Utolsó módosítás:

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Programozás alapjai II. (7. ea) C++

elektronikus adattárolást memóriacím

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Operációs rendszerek előadás Multiprogramozott operációs rendszerek

Számítógép Architektúrák

2. modul - Operációs rendszerek

Operációs rendszerek II. kidolgozott tételsor Verzió 1.0 (Build: )

Operációs rendszerek. UNIX fájlrendszer

11. Gyakorlat. Az operációs rendszer szintje

8. gyakorlat Pointerek, dinamikus memóriakezelés

Szoftvertechnológia alapjai Java előadások

Informatikai rendszerek alapjai (Informatika I.)

Operációs Rendszerek II.

Egyirányban láncolt lista

Utolsó módosítás:

.NET (Dot-NET) #1 (Bevezetés)

Kiszolgálók üzemeltetése. Iványi Péter

Hálózati operációs rendszerek II. Novell Netware 5.1 Netware fájlrendszer

Digitális rendszerek. Utasításarchitektúra szintje

Operációs rendszerek II. Folyamatok ütemezése

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Programozás alapjai. 8. előadás

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

Hardver összetevők ellenőrzése Linux alatt. Hardverguruk előnyben...

Operációs Rendszerek II.

Operációs rendszerek

Utolsó módosítás:

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata

PolyVision illesztőprogram Kibocsátási megjegyzések 2.2. változat

Átírás:

Memória kezelés 1

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 2

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 3

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. 4

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 5

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 6

Relokáció Követelmények 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 7

Követelmények 8

Védelem Követelmények 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 9

Megosztás Követelmények Több processzus is el tudja érni ugyanazt a memória helyet 10

Logikai szerkezet Követelmények 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 11

Memória hierarchia Tipikus elérési idő 1 nsec 2 nsec 10 nsec 10 msec 100 sec Regiszterek Cache Memória (RAM) Mágneses diszk Mágneses szalag Tipikus kapacitás < 1 KB 1 MB 512 MB 100 GB 100 MB 12

Cache CPU Regiszter word Cache block Memória 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 13

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 14

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 15

Monoprogramozás, csere és lapozás nélkül Felhasználói program 0xFFF Operációs Rendszer, a ROM-ban Eszköz meghajtó, a ROM-ban Felhasználói program Felhasználói program Operációs Rendszer, a RAM-ban 0 Operációs Rendszer, a RAM-ban Régi nagyszámítóges rendszerek, ma már ritka Kézi számítógépek, beágyazott rendszerek MS-DOS 16

OK, ha Monoprogramozás 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 17

Megoldás Osszuk fel a memóriát futtassunk több processzust Multiprogramozás, multitasking 18

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 C Processzus B Processzus A 19

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ós rendszer 20

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ós rendszer 21

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ós rendszer 22

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ós rendszer 23

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 24

Dinamikus méretű partíciók Operációs rendszer 8M Operációs rendszer 8M Operációs rendszer 8M Processzus 1 20M Processzus 1 20M 56M Processzus 2 14M 36M 22M 25

Dinamikus méretű partíciók Operációs rendszer 8M Operációs rendszer 8M Operációs rendszer 8M Processzus 1 20M Processzus 1 20M Processzus 1 20M Processzus 2 14M 14M Processzus 4 8M 6M Processzus 3 18M Processzus 3 18M Processzus 3 18M 4M 4M 4M 26

Dinamikus méretű partíciók Operációs rendszer 8M Operációs rendszer 8M 20M Processzus 5 14M 6M Hova??? Processzus 4 8M 6M Processzus 4 8M 6M Processzus 5 14M Processzus 3 18M Processzus 3 18M 4M 4M 27

Külső töredezettség 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 28

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? 29

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ím Cím Cím Cím Méret Méret Méret Méret Mutató Mutató Mutató Mutató 30

First-fit Memóriafoglalási stratégiák 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 31

Next-fit Memóriafoglalási stratégiák 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 32

Best-fit Memóriafoglalási stratégiák 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 33

Memóriafoglalási stratégiák first-fit 16 Mbyte foglalása esetén Utolsó foglalás best-fit lefoglalt szabad next-fit előtte utána 34

Worst-fit Memóriafoglalási stratégiák 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 35

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 36

Quick-fit Memóriafoglalási stratégiák 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 37

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 38

Buddy rendszer Lefoglalandó memória mérete 2 többszöröse 2 x Dönteni kell Felső határról: pl 2000K memória esetén x max =10, ekkor maximum 2 10 =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 39

Buddy rendszer x min =6 2 6 =64K, x max =10 2 10 =1024K 1M memória áll rendelkezésre 40

Buddy rendszer, fa szerkezet 41

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 42

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 43

Slab foglalási rendszer 44

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ó 45

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 46

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 47

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 E Processzus D Processzus B Processzus A Processzus A 48

Relokáció Logikai cím A programon belüli hely Amikor a program fut, egy valóságos fizikai cím kellene Process Control Block Program A logikai címeket mikor rendeljük fizikai címhez? Adat Verem 49

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 50

Relokáció 51

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 52

Relokáció Relatív cím Bázis regiszter Process Control Block + Program Határ regiszter < Abszolút cím Adat Verem Megszakítás az op. rsz. -nek, címzési hiba 53

Bázis regiszter Relokáció 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 54

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 55

Hátrányok Relokáció A fizikai memória folyamatos kell legyen A teljes processzusnak a memóriában kell lennie 56

Eddig feltételeztük, hogy a processzus mérete kisebb mint a memória Mi van ha nagyobb a program mint a memória? 57

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 58

Overlay, két fázisú fordító Szimbólum tábla Közös rutinok Overlay drive Pass 1 Pass 2 59

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 60