Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Máté: Architektúrák12. előadás1 Operációs rendszer szintje Operating System Machine (OSM) Ezen a szinten programozóknak rendelkezésre állnak a felhasználói.

Hasonló előadás


Az előadások a következő témára: "Máté: Architektúrák12. előadás1 Operációs rendszer szintje Operating System Machine (OSM) Ezen a szinten programozóknak rendelkezésre állnak a felhasználói."— Előadás másolata:

1 Máté: Architektúrák12. előadás1 Operációs rendszer szintje Operating System Machine (OSM) Ezen a szinten programozóknak rendelkezésre állnak a felhasználói módban használható ISA szintű utasítások és az operációs rendszer által hozzáadott utasítások: rendszerhívások (system calls). Ezeket az operációs rendszer eljárásai valósítják meg (értelmezés).

2 Máté: Architektúrák12. előadás2 Virtuális memória Régen nagyon kicsi volt a memória. Sokszor nem fért el az egész program a memóriában. Overlay (átfedés): A program több része fut ugyanazon a memória területen, mindig az aktuálisan futó rész van a memóriában, a többi rész mágneslemezen van. A programozó dolga a feladat átfedő részekre bontása, és a részek mozgatása a memória és a lemez között. Virtuális memória (virtual memory): ma már sokkal nagyobb ugyan a memória, de még sokkal nagyobb lehet a címtartomány (address space).

3 Máté: Architektúrák12. előadás3 Virtuális memóriával rendelkező gépen a teendők, ha a program valahonnan a 4096 és 8191 közötti címre (lapra) ágazik el (6.2. ábra): 1.A memória tartalmának lemezre mentése. 2.A kérdéses lap megkeresése a lemezen. 3.A kérdéses lap betöltése a memóriába. 4.A memória térkép megváltoztatása: a 4096 és 8191 közötti címek leképezése a 0 és 4095 közötti memória rekeszekre. 5.A végrehajtás folytatása. Gépi szinten semmi sem látszik (transzparens).

4 Máté: Architektúrák12. előadás4 Virtuális címtartomány: azok a címek, amelyekre a program hivatkozni tud. Fizikai címtartomány: azok a címek, amelyek tényleges memória cellát címeznek. Memória térkép (memory map) vagy laptábla (page map) kapcsolja össze a virtuális címeket a fizikai címekkel (6.3. ábra). Lap méret: 512 bájt – 64 KB (– 4 MB), mindig 2 hatványa. A virtuális és fizikai címtartomány ugyanolyan méretű lapokra van osztva. A fizikai „lapokat” lapkeretnek (page frame) nevezzük.

5 Máté: Architektúrák12. előadás5 MMU (Memory Management Unit): memória kezelő egység ábra: 32 bites virtuális cím, 32 KB fizikai memória és 4 KB-os lapméret (1 M virtuális lapszám: 1 M közönséges vagy legalább 8 cellás asszociatív memóriás laptábla).

6 Máté: Architektúrák12. előadás6 Asszociatív memória kulcs össze- hasonlító szelekciótartalom össze- hasonlító szelekciótartalom

7 Máté: Architektúrák12. előadás7 Jelenlét/hiány (present/absent) bit (6.5. ábra). Laphiba (page fault): a lap nincs a memóriában. Kérésre lapozás (demand paging): lapozás csak laphiba esetén. A program egyetlen bájtja sem kell bent legyen a memóriában, csak a másodlagos tárolón. Időosztásos rendszereknél nem kielégítő! Munka halmaz (working set): a legutóbbi k memória hivatkozásban szereplő lapok halmaza (az operációs rendszer feladata megállapítani). Időosztásos rendszerekben ezek a lapok előre visszatölthetők.

8 Máté: Architektúrák12. előadás8 Ha a munkahalmaz nagyobb, mint a lapkeretek száma, akkor gyakori lesz a laphiba. A nagyon gyakori laphibát vergődésnek (thrashing) nevezzük. Lapkezelési eljárások: melyik lap helyett töltsük be a kért lapot? LRU (Least Recently Used, legrégebben használt): általában jó, de pl. 9 lapon átnyúló ciklus esetén, ha csak 8 memória lap van (6.6. ábra). FIFO (First-in First-Out, először be, először ki): egyszerűbb (de most ez se jobb, mint LRU). Csak a módosult (dirty, szennyezett) lapokat kell visszaírni, a tisztát (clean) nem (szennyezés bit).

9 Máté: Architektúrák12. előadás9 Lapméret és elaprózódás Ha egy program k lapon fér el, akkor általában a k -dik lap nincs tele. Ha a lap mérete n, akkor programonként átlagosan n/2 bájt kihasználatlan: belső elaprózódás (internal fragmentation). A belső elaprózódás ellen a lap méretének csökkentésével lehet védekezni, de ez a laptábla méretének növekedéséhez vezet. A kis lap előnytelen a lemez sávszélességének kihasználása szempontjából, viszont kisebb a vergődés kialakulásának valószínűsége.

10 Máté: Architektúrák12. előadás10 Szegmentálás Egy fordítóprogramnak a következő célorra kellhet memória (6.7. ábra): szimbólum tábla, forrás kód, konstansok, elemzési fa, verem. Rögzített memória felosztás esetén ezek egyike kicsinek bizonyulhat, miközben a többi nem használja ki a rendelkezésére álló tartományt.

11 Máté: Architektúrák12. előadás11 Szegmens (6.8. ábra) Minden szegmens címtartománya 0-tól valamilyen maximumig terjed. A szegmens tényleges mérete ennél kisebb lehet. A program számára a címtartomány két dimenziós: (szegmens, offset). A programozó számára látható logikai egység (6.9. ábra). Általában egy szegmensben csak egyféle dolgok vannak: vagy kód vagy konstans vagy … Különböző tárvédelmi lehetőségek: kód: csak végrehajtható, nem írható, nem olvasható, konstans: csak olvasható …

12 Máté: Architektúrák12. előadás12 A szegmentálás megvalósítása Cseréléssel: Teljes szegmensek mozognak a memória és a lemez között. Ha olyan szegmensre hivatkozunk, amely nincs a memóriában, akkor betöltődik. Külső elaprózódáshoz (external fragmentation) vezethet (6.10. ábra). Lyukacsosodásnak (checkerboarding) is nevezik. Összepréselés: idő igényes, de időnként kell. Legjobb illesztés (best fit) és első illesztés (first fit) algoritmus. Az utóbbi gyorsabb és jobb is az általános hatékonyság szempontjából. Lapozással: Minden szegmensnek saját laptáblája van. A szegmens néhány lapja a memóriában van.

13 Máté: Architektúrák12. előadás13 Pentium II (6.14. ábra) A szegmens regiszter tartalmazza a szelektort (6.12. ábra). A szelektor indexe választja ki a leírót (descriptor) a lokális (LDT, Local) vagy globális leíró táblából (GDT, Global Descriptor Table). (6.13. ábra). A 0. leíró használata csapdát eredményez (hiba). Ha P=0, csapda: be kell tölteni a szegmenst. Ha offset a szegmens határán túl van, csapda (hiba). G=0 : LIMIT bájtokban, 1 : lapokban (lap  4 KB). Lapozást tiltó flag (lineáris = fizikai cím).

14 Máté: Architektúrák12. előadás14 Lapkönyvtár (page directory) A 32 bites lineáris címek és a 4 KB-os lapok miatt egy szegmenshez egymillió lap is tartozhat. Minden futó programhoz egy lapkönyvtár tartozik, benne 1024 db 32 bites bejegyzés (6.15. ábra). Minden bejegyzés egy laptáblára mutat, benne 1024 db 32 bites mutató. Minden mutató 4 KB-os lapkeretre mutat. A lapkeret címéhez OFF-ot hozzáadva a fizikai címet kapjuk. A táblákban a mutatókhoz nem használt biteket az operációs rendszer használja (védelem, szennyezettség, hozzáférés, …)

15 Máté: Architektúrák12. előadás15 A Pentium II védelmi rendszere (6.16. ábra) A futó program pillanatnyi szintjét a PSW tartalmazza. A program a saját szintjén lévő szegmenseket szabadon használhatja. Magasabb szinten lévő adatokhoz hozzáfér, de az alacsonyabb szinten lévők kezelése csapdát okoz. Más szinten lévő eljárás hívásánál CALL helyett szelektort kell alkalmazni, ez egy hívás kaput (call gate) jelöl ki.

16 Máté: Architektúrák12. előadás16 Az UltraSPARC II virtuális memóriája Virtuális cím 64 bites (44 bitre korlátozva). Fizikai cím maximum 21 bites. Lapméret: 8, 64, 512 KB és 4 MB (6.17. ábra). A kód és adat lapokat külön kezeli. A legutóbb használt lapokat gyorsan megtalálja (hardver), a nem nagyon régen használtakat már lassabban (hardver segítséggel), a nagyon régen használtakat csak hosszas keresés után (szoftveres úton).

17 Máté: Architektúrák12. előadás17 TLB (Translation Lookaside Buffer) a legutóbbi 64 lapszámot tartalmazza (asszociatív memória). Környezet (context): processzus szám (6.18. ábra). TLB hiány (TLB miss) esetén: csapda. TSB (Translation Storage Buffer): úgy van szervezve, mint egy direkt leképezésű gyorsító tár. TSB találat esetén egy TLB sor helyébe beíródik a kért lapnak megfelelő bejegyzés. TSB hiány esetén a fordító tábla (translation table) alapján keres pl. tördeléses eljárással (mod p -hez tartozó listák végignézésével). Ha ez se találja a keresett lapot, akkor nincs a memóriában (lap hiba).

18 Máté: Architektúrák12. előadás18 Virtuális memória és gyorsító tár Két szintű hierarchia: Virtuális memória használatakor az egész programot lemezen tartjuk, fix méretű lapokra osztjuk. Lap hiány esetén a lapot a memóriába töltjük (operációs rendszer). Gyorsító tár esetén a memóriát gyorsító sorokra osztjuk. Gyorsító tár hiány esetén a sort a gyorsító tárba töltjük (hardver).

19 Máté: Architektúrák12. előadás19 Szerkesztő A következő feladatokat kell megoldania: az azonos nevű és osztályú szegmens szeletek egymáshoz illesztése a szegmens szeletek definíciójában megadott módon, a GROUP pszeudo utasítással egy csoportba sorolt szegmensek egymás után helyezése, a relokáció elvégzése, a külső hivatkozások ( EXTRN ) feloldása. Az object file nemcsak a lefordított utasításokat tartalmazza, hanem további – a szerkesztőnek szóló – információt is.

20 Máté: Architektúrák12. előadás20 Szerkesztő Lehetővé teszi különböző nyelveken készített program részletek összeillesztését (7.13. ábra). Két menetben dolgozik, az első menetben táblázatokat készít, a második menetben az elhelyezett információk alapján elvégzi a szerkesztést.

21 Máté: Architektúrák12. előadás21 A térkép (map) szegmens szeletenként a következő információt tartalmazza: modul név, szegmens név, osztály, illesztés típusa, kombinációs típus, hossz, kezdőcím, relokációs konstans. A kezdőcím, és a relokációs konstans csak az első menet végén kerül kitöltésre.

22 Máté: Architektúrák12. előadás22 A globális szimbólum tábla a PUBLIC változókból: A PUBLIC utasítás nem tartalmazza a típust és a szegmens nevét, de az assembler ismeri, és el tudja helyezni az object modulban. A cím a táblázat összeállításakor még relokálatlan címet jelent. Az első menet végén ebben a táblázatban is elvégezhető a relokáció. modul névszegmens névszimbólumtípuscím...

23 Máté: Architektúrák12. előadás23 Az assembler az EXTRN utasítás alapján a következő információt adja át: Definiálatlan külső hivatkozások. Moduláris programozás. Object könyvtárak. hivatkozás1hivatkozás2... szimbólumtípusszegmens név offszet cím szegmens név offszet cím...

24 Máté: Architektúrák12. előadás24 Cím hozzárendelés (binding) Időosztásos (time sharing) rendszer. Egy program elindításakor többek között a következő feladatokat kell végrehajtani: betöltés – indítás – felfüggesztés – kimentés a program folytatásakor: visszamentés – futtatás – felfüggesztés – kimentés Általában nem biztosítható, hogy a visszamentett program a memóriának ugyanarra a területére kerüljön vissza, ahol korábban futott!

25 Máté: Architektúrák12. előadás25 Ha pl. a programunk egy JMP L ugró utasítást tartalmaz, akkor L -hez valamikor hozzá kell rendelnünk a konkrét címet – bindig = (cím) hozzárendelés. A cím hozzárendelés különböző időpontokban történhet: Program írásakor (gépi kódú programozás): Manapság már ritka. Fellelhető a szegmens definícióban alkalmazható AT kifejezés kombinációs típusban.

26 Máté: Architektúrák12. előadás26 Fordításkor: pl. szintén az AT kifejezés kombinációs típussal kapcsolatban, ha a szegmensben szimbolikus címzést használnak. Általánosan használt volt, amikor még nem különült el a fordítás és szerkesztés folyamata. Szerkesztéskor: Ma ez a cím hozzárendelés egyik legelterjedtebb módja. Általában ez valósul meg az assembly programokban is.

27 Máté: Architektúrák12. előadás27 Betöltéskor: Ekkor a betöltő átveszi a szerkesztő feladatainak egy részét, pl. a FAR típusú cím konstansok értékének kiszámolását, hiszen ezek értéke a betöltés helyétől függ. A program betöltése valamivel hosszabb időt vesz igénybe, előnye viszont, hogy a betöltési cím tetszőleges lehet.

28 Máté: Architektúrák12. előadás28 A címzéshez használt bázis regiszter kitöltésekor: Ez a módszer már biztosítja az időosztásos rendszerben futtatható alakú programok elkészítését, de a FAR címek nagy problémát jelentenek, mert a program áthelyezésekor módosítandók a FAR címek. Megfelelően kialakított hardver: pl. a Motorola 680x0 processzor család rendelkezik egy program bázis regiszterrel. Minden utasítás tartalmaz egy bitet, hogy a benne szereplő hivatkozás módosítandó-e a program bázis regiszterrel.

29 Máté: Architektúrák12. előadás29 Az utasítás végrehajtásakor: Ehhez a cím hozzárendelést két lépésben valósítják meg. Először a szimbolikus címet virtuálissá alakítják (történhet pl. fordítási vagy szerkesztési időben), majd a virtuális címet fizikai címmé. Ez utóbbi a lap (page) tábla kitöltésekor, tehát gyakran az utasítás végrehajtásának megkezdése után történik. Amikor ugyanis a hivatkozott lap még nincs a memóriában, akkor azt az utasítás végrehajtása előtt be kell tölteni, a lap táblának a megfelelő elemét módosítani kell (cím hozzárendelés), majd ezután történhet a megkezdett utasítás végrehajtásának befejezése.

30 Máté: Architektúrák12. előadás30 Dinamikus szerkesztés Nagyméretű programokban bizonyos eljárások csak nagyon ritkán szükségesek. Csatoló táblázat (Linkage Segment): minden esetleg szükséges eljáráshoz egy csatoló blokkot (strukrúrát) tartalmaz. CSAT_STRSTRUCT CIMDDFAR PTR CSATOLO NEVDB’ ’; 8 szóköz CSAT_STRENDS

31 Máté: Architektúrák12. előadás31 Pl. a dinamikusan szerkesztendő ALFA eljáráshoz az: ALFACSAT_STR csatoló blokk tartozhat. Az eljárás csatolása, hívása: MOVBX, OFFSET ALFA CALL[BX].CIM Első híváskor a CSATOLO kapja meg a vezérlést. A csatolandó eljárás neve a [BX].NEV címen található. A név alapján betölti és a programhoz szerkeszti a megfelelő eljárást.

32 Máté: Architektúrák12. előadás32 A szerkesztés végeztével CIM -et a most a programhoz szerkesztett eljárás kezdőcímére változtatja, és erre a címre adja a vezérlést: JMP[BX].CIM JMP, és nem CALL, hogy a veremben a CSATOLO -t hívó programhoz való visszatérés címe maradjon. További hívások esetén a CSATOLO közbeiktatása nélkül azonnal végrehajtásra kerül az imént csatolt eljárás.

33 Máté: Architektúrák12. előadás33 CSATOLO használhatja és módosíthatja a program szerkesztésekor készült térképet (map) és a globális szimbólumok táblázatát. Szokásos megszorítás: a csatolandó eljárás nem tartalmazhat EXTRN utasítást, és egyetlen, a memóriába bárhová betölthető modulból áll. Ekkor a szerkesztés magára a betöltésre, és ennek a tényét rögzítő adminisztrációra egyszerűsödik. A dinamikusan szerkesztett eljárásokat könyvtárakba szokás foglalni (pl.:.dll ), az eljárások általában többszöri belépést tesznek lehetővé (re-entrant).

34 Máté: Architektúrák12. előadás34 Továbbfejlesztés: A csatoló paraméterként kapja meg a felhívandó eljárás nevét. A csatoló program hoz létre egy csatoló táblázatot. A csatoló a táblázatban ellenőrzi, hogy csatolva van-e a kívánt eljárás. Ha nincs, akkor elvégzi a csatolást, ha pedig csatolva van, akkor közvetlenül meghívja az eljárást.

35 Máté: Architektúrák12. előadás35 Menü vezérelt rendszer esetében, ha a kiválasztott menü elemhez tartozó szövegből generálni lehet az – esetleg csatolandó, majd – végrehajtandó eljárás nevét és az eljárást tartalmazó file nevét, akkor a program bővítését, javítását a megfelelő file-ok hozzáadásával vagy cseréjével és a menü szöveg file-jának cseréjével akár üzemelés közben is elvégezhetjük.

36 Máté: Architektúrák12. előadás36 A csatolt program törlése: a törlendő eljárás csatoló blokkjában a CIM visszaállítása – illetve a csatoló tábla törlése – után az eljárás törölhető. Szokásos, hogy egy dinamikusan szerkesztendő eljáráshoz tartozik egy számláló, melynek értéke a csatolás előtt 0. A hívó program először „bejelenti” az igényét az eljárásra. Ha a számláló 0, akkor megtörténik a csatolás. számláló ++1. Ha a továbbiakban már nem igényli az eljárást, akkor „elengedi” (számláló --1 ). Ha a számláló =0, akkor senki sem igényli az eljárást, tehát törölhető.


Letölteni ppt "Máté: Architektúrák12. előadás1 Operációs rendszer szintje Operating System Machine (OSM) Ezen a szinten programozóknak rendelkezésre állnak a felhasználói."

Hasonló előadás


Google Hirdetések