operációs rendszer szintje operating system machine (osm)

76
Máté: Architektú rák 10. előadás 1 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).

Upload: herb

Post on 11-Jan-2016

18 views

Category:

Documents


2 download

DESCRIPTION

Operációs rendszer szintje Operating System Machine (OSM) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 1

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

Page 2: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 2

Virtuális memóriaRé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 háttér tároló között.

Ma már sokkal nagyobb ugyan a memória, de még sokkal nagyobb lehet a címtartomány (address space).

Page 3: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 3

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.

A virtuális és fizikai címtartomány ugyanolyan méretű lapokra van osztva (6.3. ábra). A fizikai „lapokat” lapkeretnek (page frame) nevezzük.

Lap méret: 512 B – 64 KB (– 4 MB), mindig 2 hatványa.

Page 4: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 4

A virtuális címtartomány sokkal nagyobb, mint a fizikai!

Mit kell tenni, ha olyan címre történik hivatkozás, amely nincs a memóriában?

Lap Virtuális címek

N -

… … - …

4 16384 - 20479

3 12288 - 16383

2 8192 - 12287

1 4096 - 8191

0 0 - 4095

Lapkeret Fizikai címek

n -

… … - …

4 16384 - 20479

3 12288 - 16383

2 8192 - 12287

1 4096 - 8191

0 0 - 4095

Page 5: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 5

1. Egy lapkeret (pl. a 0-4095) 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 lapkeretbe.4. A memória térkép megváltoztatása: pl. a 4096 és

8191 közötti címek leképezése a betöltött lapkeret címtartományába.

5. A végrehajtás folytatása.

Virtuális címtartomány

…819640960

Fizikai címtartomány

…81964096

0leképezés

6.2. ábra

Page 6: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 6

A virtuális címek fizikai címekre történő leképezését az MMU (Memory Management Unit – memória kezelő egység végzi.

Memória térkép (memory map) vagy laptábla (page map) kapcsolja össze a virtuális címeket a fizikai címekkel. Pl. 4 KB-os lapméret és 32 bites virtuális cím esetén 1 millió virtuális lap van, ezért 1 millió bejegyzésű laptáblára van szükség. 32 KB fizikai memória esetén csak 8 lapkeret van, ezért a leképezés megoldható 8 cellás asszociatív memóriával is (a gyakorlatban több ezer lapkeret van, és az asszociatív memória igen drága).

Page 7: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 7

Asszociatív memória

kulcsmező

kulcsmező

kulcs

össze-hasonlító

szelektor

tartalom

össze-hasonlító

tartalom

szelektor

Page 8: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 8

Jelenlét/hiány (present/absent)

…43 1 110210

0 0 … 0 1 1 0 0 0 0 0 0 0 1 0 1 1 020 bites virtuális

lapszám12 bites offset

32 bites virtuális cím

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

15 bites fizikai cím

6.4. ábra

Laptábla

Page 9: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 9

…15 0 014 1 413 0 012 0 011 1 510 0 0

9 0 08 1 37 0 06 1 75 1 64 0 03 1 22 0 01 1 00 1 1

fizikai memória

6.5. ábraLaptábla

…6. virtuális lap 75. virtuális lap 6

11. virtuális lap 514. virtuális lap 48. virtuális lap 33. virtuális lap 20. virtuális lap 11. virtuális lap 0

lap keret

virtuális lap lap keret

Page 10: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 10

Laphiány (page fault): a lap nincs a memóriában.Kérésre lapozás (demand paging): lapozás csak

laphiány 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.

Ha a munkahalmaz nagyobb, mint a lapkeretek száma, akkor gyakori lesz a laphiány. A nagyon gyakori laphiányt vergődésnek (thrashing) nevezzük.

Page 11: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 11

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 nem jó pl. 9 lapon átnyúló ciklus esetén, ha csak 8 memória lap van (6.6. ábra).

7. Virtuális lap6. Virtuális lap5. Virtuális lap4. Virtuális lap3. Virtuális lap2. Virtuális lap1. Virtuális lap0. Virtuális lap

7. Virtuális lap6. Virtuális lap5. Virtuális lap4. Virtuális lap3. Virtuális lap2. Virtuális lap1. Virtuális lap8. Virtuális lap

7. Virtuális lap6. Virtuális lap5. Virtuális lap4. Virtuális lap3. Virtuális lap2. Virtuális lap0. Virtuális lap8. Virtuális lap

Page 12: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 12

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). Most is előnyös, ha az utasítások és az adatok elkülönülten helyezkednek el a memóriában: az utasításokat nem kell visszaírni.

Page 13: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 13

Lapméret és elaprózódásHa 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 is, viszont kisebb a vergődés kialakulásának valószínűsége.

Page 14: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 14

Szegmentálás

Egy fordítóprogramnak a következő célokra 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.

Verem terület

Elemzési fa

Konstans táblaForrás szöveg

Szimbólum tábla

Virtuális címtartomány

Szabad

Jelenleg használt

Page 15: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 15

Szegmentálás (6.8. ábra)

0. szegmens

1. szegmens

2. szegmens

3. szegmens

4. szegmens

20 K

16 K

12 K

8 K

4 K

0

Konstans tábla

Elemzési fa

Hívási verem

Szegmentált memóriában minden tábla a többitől függetlenül nőhet

vagy zsugorodhat.

Szim-bólum tábla

Forrás szöveg

Page 16: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 16

Szegmens (6.9. ábra)A programozó számára látható logikai egység.

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

Á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ó• …

Page 17: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 17

A szegmentálás és a virtuális memória összehasonlítása (6.9. ábra)

Szempontok Lapozás Szegmentálás

Tudnia kell róla a programozónak? Nem Igen

Hány lineáris címtartomány létezik?

1 Több

Meghaladhatja-e a virtuális címtartomány nagysága a fizikai memória méretét?

Igen Igen

Könnyen kezelhetők a változó méretű táblák?

Nem Igen

Mi ennek a technikának a lényege?Nagy

memória szimulálása

Több címtartomány

biztosítása

Page 18: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 18

A szegmentálás megvalósítása

Lapozással: Minden szegmensnek saját laptáblája van. A szegmens néhány lapja a memóriában van.

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.

Page 19: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 19

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

1. 8 K

0. 4 K

2. 5 K

3. 8 K

4. 7 K

7. 5 K

0. 4 K

2. 5 K

3. 8 K

4. 7 K

3 K

7. 5 K

0. 4 K

2. 5 K

3. 8 K

5. 4 K

3 K

3 K

7. 5 K

0. 4 K

2. 5 K

6. 4 K

5. 4 K

3 K

3 K

4 K

7. 5 K

0. 4 K

2. 5 K

6. 4 K

5. 4 K

10 K

6 K

7. 5 K

0. 4 K

2. 5 K

3. 8 K

4. 7 K

3 K5 K

4 K

4 K

Page 20: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 20

Pentium 4 (6.12-14. ábra)

A szegmens regiszter tartalmazza a szelektort.

13 1 2Index

A szelektor (6.12. ábra) indexe választja ki a leírót (descriptor) a lokális (LDT, Local Descriptor Table) 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).

0: GDT1: LDT Védelmi szint: 0-3

Szelektor:

Page 21: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 21

Ha P=0, csapda: nem létező szegmens, vagybe kell tölteni a szegmenst.

BASE 0-15 LIMIT 0-15

B 24-31 G D 0 L 16-19 P DPL TYPE B 16-23

0: LIMIT értéke bájtokban1: LIMIT értéke lapokban(lap ≥ 4 KB)

0: 16 bites szegmens r.1: 32 bites szegmens r.

Szegmens típusa, védelme Védelmi szint (0-3)0: a szegmens nincs a memóriában1: a szegmens a memóriában van

Pentium 4 kódszegmensének leírója (6.13. ábra)

Page 22: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 22

6.14. ábra

Ha offset (a szegmens elejéhez viszonyított relatív cím) a szegmens határán túl van, csapda (hiba).

Lapozást tiltó flag (a globális vezérlőregiszter bitje):Ha engedélyezett: lineáris cím = virtuális cím Ha tiltott: lineáris cím = fizikai cím

32 bites lineáris cím

Szelektor

Bázis cím

Limit

Más mezők

Offset

Leíró

+

Page 23: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 23

Lapkönyvtár (page directory 6.15. ábra)A 32 bites lineáris címek és a 4 KB-os lapok miatt egy

szegmenshez egymillió lap is tartozhat. Túl sok!Minden futó programhoz egy lapkönyvtár tartozik.Minden bejegyzés egy laptáblára mutat, vagy sehova.

Lineáris cím10 10 12DIR PAGE OFF

Lapkönyvtár1023

…210

32 bit

Laptábla1023

…210

32 bit

Lapkeret

32 bit

Page 24: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 24

A lapkönyvtárnak azokhoz a mutatóihoz, amelyek nem mutatnak sehova, nem kell helyet foglalni a laptábla számára (pl. csak két db. ezer, és nem egy milliós bejegyzésű tábla kell egy 4 MB-nál rövidebb szegmenshez ).

A táblákban minden bejegyzéshez 32 bit áll rendelkezésre. A mutatókhoz nem használt biteket a hardver az operációs rendszer számára hasznos jelzésekkel tölti ki (védelem, szennyezettség, hozzáférés, …).

Speciális hardver támogatja a legutóbb használt lapok gyorsabb elérését.

Page 25: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 25

A Pentium 4 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 (más védelmi szintre csak szabványos – tehát ellenőrzött – belépési ponton lehet áttérni).

0123

szint

A szintek egy lehetséges felhasználása:

Felhasználói programokOsztott könyvtárRendszer hívások

Kernel

Page 26: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 26

Az UltraSPARC III virtuális memóriája

Virtuális cím 64 bites, egyelőre 44 bitre korlátozva.

0 264-1264-243243-1

Virtuális címtartománymegengedett zónák

44 bitre korlátozva ez a címtartomány folytonos.

Fizikai címtartomány maximum 41 bites.

A kód és adat lapokat külön kezeli.

Page 27: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 27

Lapméret: 8, 64, 512 KB és 4 MB (6.17. ábra).

Lap mérete

Virtuális lap címe (bit)

OFFSET (bit)

Fizikai lap címe (bit)

OFFSET (bit)

8 KB 51 (31) 13 → 28 13

64 KB 48 (28) 16 → 25 16

512 KB 45 (25) 19 → 22 19

4 MB 42 (22) 22 → 19 22

44 bitre korlátozva maximum 41 bit

Page 28: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 28

A memória kezelő egység (MMU) három szinten dolgozik:

• A legutóbb használt lapokat gyorsan megtalálja (hardver). A kód és az adat lapokat teljesen külön kezeli.

• 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).

Page 29: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 29

TLB (Translation Lookaside Buffer) a legutóbb használt 64 lap bejegyzését tartalmazza (6.18. ábra).

Környezet (context): processzus szám.

Asszociatív memória: Kulcs a keresett virtuális lap és a környezet.

TLB hiány (TLB miss) esetén: csapda.

ÉrvényesVirtuális

lap Környezet

Fizikai lapkeret Flag-ek

Kulcs

Page 30: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 30

TLB hiány esetén TSB folytatja a keresést (szoftver).TSB (Translation Storage Buffer): olyan felépítésű,

mint egy direkt leképezésű gyorsító tár (operációs rendszer építi fel, és kezeli a központi memóriában).

TSB találat esetén egy TLB sor helyébe beíródik a kért lapnak megfelelő bejegyzés.

Érvényes

Virtuális lap tag Környezet

Fizikai lapkeret Flag-ek

Virtuális lap címe tag line

Page 31: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 31

TSB hiány esetén a fordítótábla (translation table) alapján keres. Ennek a táblának a szerkezetét az operációs rendszer határozza meg.

Egy lehetséges megoldás a tördeléses eljárás. Ebben az esetben a memóriába töltött virtuális lapok és a nekik megfelelő fizikai lapkeretek sorszáma listákba van helyezve. Ha a virtuális lap sorszáma p-vel osztva q-t ad maradékul, akkor csak a q-adik listát kell végignézni.

Ha ez se találja a keresett lapot, akkor nincs a memóriában.

Page 32: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 32

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 központi memóriába töltjük (operációs rendszer).

Gyorsító tár esetén a központi memóriát gyorsító sorokra osztjuk. Gyorsító tár hiány esetén a gyorsító sort a gyorsító tárba töltjük (hardver).

Page 33: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 33

Makró és blokk ismétlésMakró definíció: M_névMACRO [fpar1[,fpar2...]]

; makró fej (kezdet)

... ; makró törzsENDM ; makró vége

fpar1,fpar2... formális paraméterek vagy egyszerűen paraméterek.

A makró definíció nem lesz része a lefordított programnak, csupán azt határozza meg, hogy később mit kell a makró hívás helyére beírni (makró kifejtés, helyettesítés).

A makró törzsön belül előfordulhat makró hívás és másik makró definíció is.

Page 34: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 34

Makró hívás: M_név [apar1[,apar2...]]

apar1,apar2... aktuális paraméterek/argumentumok. A műveleti kód helyére írt M_név hatására a korábban

megadott definíció szerint megtörténik a makró helyettesítés, más néven makró kifejtés. Ez a makró törzs bemásolását jelenti, miközben az összes paraméter összes előfordulása a megfelelő argumentummal helyettesítődik. A helyettesítés szövegesen történik, azaz minden paraméter – mint szöveg – helyére a megfelelő argumentum – mint szöveg – kerül.

A helyettesítés nem rekurzív. Makró hívás argumentuma nem lehet makró hívás.Az argumentumnak megfelelő formális paraméternek lehet

olyan előfordulása, amely a későbbiek során makró hívást eredményez.

Page 35: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 35

Dupla szavas összeadás: (DX:AX)(DX:AX)+(CX:BX)

Eljárás deklaráció:

EDADD PROC NEAR

ADD AX,BX

ADC DX,CXRET

EDADD ENDP

Makró definíció:

MDADD MACRO

ADD AX,BX

ADC DX,CX

ENDM

Page 36: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 36

Ha a programban valahol dupla szavas összeadást kell

végezzünk, akkor hívnunk kell az eljárást illetve a makrót:

Eljárás hívás:

CALL EDADD

Makró hívás:

MDADD

Futás közben felhívásra kerül az EDADD eljárás

Fordítás közben megtörténik a makró helyettesítés:

ADD AX,BX

ADC DX,CX

Futás közben ez a két utasítás kerül csak végrehajtásra.

Page 37: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 37

Látható, hogy eljárás esetén kettővel több utasítást kell végrehajtanunk, mint makró esetében (CALL EDADD és RET).

Még nagyobb különbséget tapasztalunk, ha (CX:BX) helyett paraméterként kívánjuk megadni az egyik összeadandót:

Page 38: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 38

Eljárás deklaráció:

EDADD2 PROC NEAR

PUSH BP

MOV BP,SP ADD

AX,4[BP]

ADC DX,6[BP]

POP BP

RET 4

EDADD ENDP

Eljárás hívás:

Ha SI az összeadandónk címét tartalmazza, akkor a felhívás:

PUSH 2[SI]

PUSH [SI]

CALL EDADD2

Futás közben végrehajtásra kerül a paraméter átadás, az eljárás hívás, az eljárás: összesen 9 utasítás

Page 39: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 39

Most sem része a makró definíció a lefordított programnak.

Makró definíció:

MDADD2 MACRO P

IFB PADD AX,BXADC DX,CX

ELSE

ADD AX,PADC DX,P+2

ENDIF

ENDM

Makró hívás:

MDADD2 [SI]

Fordítás közben a hívás azADD AX,[SI]ADC DX,[SI]+2

utasításokra cserélődik, futás közben csak ez a két utasítás kerül végrehajtásra.

MDADD2

hatása:

ADD AX,BXADC DX,CX

Page 40: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 40

A fenti példában rövid volt az eljárás törzs, és ehhez képest viszonylag hosszú volt a paraméter átadás és átvétel. Ilyenkor célszerű a makró alkalmazása.

De ha a program sok helyéről kell meghívnunk egy hosszabb végrehajtandó programrészt, akkor általában célszerűbb eljárást alkalmazni.

Page 41: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 41

Paraméter másutt is előfordulhat a makró törzsben, nemcsak az operandus részen, pl.:

PL macro p1,P2mov ax,p1P2 p1endm

PL Adat, INChatása:

mov ax,AdatINC Adat

Page 42: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 42

A &, %, ! karakterek továbbá a <> és ;; speciális szerepet töltenek be makró kifejtéskor.

& (helyettesítés operátor): • ha a paraméter – helyettesített – értéke része egy szónak;• idézeten belüli helyettesítés:

errgen macro y, x

err&y db ’Error &y: &x’

endm

errgen 5, <Unreadable disk>

hatása:

err5 db ’Error 5: Unreadable disk’

Page 43: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 43

<> (literál szöveg operátor): Ha aktuális paraméter szóközt vagy ,-t is tartalmaz. Az előző példa <> nélkül:

errgen 5, Unreadable disk

kifejtve:err5 db ’Error 5: Unreadable’

adat macro pdb pendm

adat <’abc’,13,10,0>adat ’abc’,13,10,0

kifejtve:db ’abc’,13,10,0db ’abc’

Page 44: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 44

! (literál karakter operátor): Az utána következő karaktert makró kifejtéskor közönséges karakterként kell kezelni. Pl.: a korábbi errgen makró

errgen 103, <Expression !> 255>

hívásának hatása:

err103 db ’Error 103: Expression > 255’

de

errgen 103, <Expression > 255>

hívásának hatása:

err103 db ’Error 103: Expression ’

Page 45: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 45

% (kifejezés operátor): Az utána lévő argumentum (kifejezés is lehet) értéke – és nem a szövege – lesz az aktuális paraméter. Pl.:

sym1 equ 100sym2 equ 200txt equ ’Ez egy szöveg’

kif macro exp, valdb ”&exp = &val”endm

kif <sym1+sym2>, %(sym1+sym2)kif txt, %txt

db ”sym1+sym2 = 300”db ”txt = ’Ez egy szöveg’”

Page 46: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 46

Az alábbi példa a % használatán kívül a makró törzsön belüli makró hívást is bemutatja:

s = 0

ErrMsg MACRO text

s = s+1

Msg %s,text

ENDM

Msg MACRO sz,str

msg&sz db str

ENDM

Page 47: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 47

s = 0ErrMsg MACRO texts = s+1

Msg %s,textENDM

Msg MACRO sz,strmsg&sz db str

ENDM

ErrMsg ’syntax error’makró hívás hatására bemásolásra kerül (.LALL hatására

látszik a listán) azs = s+1

Msg %s,’syntax error’szöveg. s értéke itt 1-re változik. Újabb makró hívás (Msg). A %s paraméter az s értékére (1) cserélődik, majd kifejtésre kerül ez a makró is, ebből kialakul:

msg1 db ’syntax error’

Page 48: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 48

s = 0ErrMsg MACRO texts = s+1

Msg %s,textENDM

Msg MACRO sz,strmsg&sz db str

ENDM

Egy újabb hívás és hatása: ErrMsg ’invalid operand’msg2 db ’invalid operand’

Page 49: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 49

;; (makró kommentár): A makró definíció megjegyzéseinek kezdetét jelzi. A ;; utáni megjegyzés a makró kifejtés listájában nem jelenik meg.

Page 50: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 50

LOCALc1[,c2...]c1, c2, ... minden makró híváskor más, ??xxxx alakú

szimbólumra cserélődik, ahol xxxx a makró generátor által meghatározott hexadecimális szám. A LOCAL operátort közvetlenül a makró fej utáni sorba kell írni.

KOPOGmacro nLOCAL ujramov cx,n

ujra:KOPPloop ujraendm

Ha a programban többször hívnánk a KOPOG makrót, akkor a LOCAL operátor nélkül az ujra címke többször lenne definiálva.

Page 51: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 51

Makró definíció belsejében lehet másik makró definíció is. A belső makró definíció csak a külső makró meghívása után jut érvényre, válik láthatóvá. Pl.:

shifts macro OPNAME ; makrót ; definiáló

makró

OPNAME&S MACRO OPERANDUS,N

mov cl, N

OPNAME OPERANDUS,cl

ENDM

endm

Page 52: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 52

shifts macro OPNAME ; makrót ; definiáló

makróOPNAME&S MACRO OPERANDUS,N

mov cl, NOPNAME OPERANDUS,clENDMendm

Ha ezt a makrót felhívjuk pl.:shifts ROR

akkor aRORS MACRO OPERANDUS,N

mov cl, NROR OPERANDUS,clENDM

makró definíció generálódik.

Page 53: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 53

RORS MACRO OPERANDUS,N

mov cl, N

ROR OPERANDUS,cl

ENDM

Mostantól meghívható a RORS makró is, pl.:

RORS AX, 5

aminek a hatása:

mov cl, 5

ROR AX,cl

Page 54: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 54

Makró definíció belsejében meghívható az éppen definiálás alatt lévő makró is (a makró hívás ezáltal rekurzívvá válik).

PUSHALL macro reg1,reg2,reg3,reg4,reg5IFNB <reg1> ;; ha a paraméter nem üres

push reg1 ;; az első regiszter mentésePUSHALL reg2,reg3,reg4,reg5 ;; rekurzió

ENDIFENDM

Most pl. aPUSHALL ax, bx, cx

makró hívás hatása:push axpush bxpush cx

Page 55: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 55

PUSHALL macro reg1,reg2,reg3,reg4,reg5IFNB <reg1> ;; ha a paraméter nem üres

push reg1 ;; az első regiszter mentésePUSHALL reg2,reg3,reg4,reg5 ;; rekurzió

ENDIFENDM

PUSHALL ax, bx, cxmakró hívás hatása:

push axPUSHALL bx, cx

az újabb hívás hatása:push bxPUSHALL cx

az újabb hívás hatása:push cxPUSHALL

ennek hatására nem generálódik semmi.

Page 56: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 56

FL_CALLELJ = 0CALLELJ macro ;; Eljárást beépítő és felhívó makró

LOCAL FIRST ;; nem lenne fontos IF FL_CALLELJ ;; a 2. hívástól igaz

call Elj ;; elég felhívni az eljárástEXITM ;; makró helyettesítés vége

ENDIFFL_CALLELJ = 1 ;; csak az első híváskor

JMP FIRST ;; jut érvényreElj proc ;; eljárás deklaráció

...ret

Elj endpFIRST: call Elj ;; az eljárás felhívása

endm

Page 57: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 57

Az első CALLELJ hívás hatására az

FL_CALLELJ = 1

JMP ??0000

Elj proc

...

ret

Elj endp

??0000: call Elj

utasítások generálódnak (??0000 a FIRST-ből keletkezett).

Page 58: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 58

A további CALLELJ hívások esetén csak egyetlen utasítás, a

call Elj

utasítás generálódik.

A megoldás előnye, hogy az eljárás akkor és csak akkor része a programnak, ha a program tartalmazza az eljárás felhívását is, és mégsem kell törődjünk azzal, hogy hozzá kell-e szerkesztenünk a programhoz vagy se.

Page 59: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 59

Megváltoztathatunk egy makró definíciót azáltal, hogy újra definiáljuk.

Makró definíción belül előfordulhat másik makró definíció.

E két lehetőség kombinációjából adódik, hogy a makró definíción belül megadhatunk ugyanarra a makró névre egy másik definíciót, ezáltal készíthető olyan makró, amely „átdefiniálja” önmagát.

Az önmagát átdefiniáló makrók esetében a belső és külső definíciót lezáró ENDM utasítások között egyetlen utasítás sem szerepelhet – még kommentár sem!

Page 60: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 60

Önmagát „átdefiniáló” makró (az előző feladat másik megoldása):

CALLELJ2 macro ; külső makró definíciójmp FIRST

Elj2 proc ; eljárás deklaráció...ret

Elj2 endpFIRST: call Elj2 ; eljárás hívásCALLELJ2 MACRO ; belső makró definíció

call Elj2 ; eljárás hívásENDM ; belső makró definíció végeendm ; külső makró definíció vége

Page 61: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 61

CALLELJ2 első hívásakor a kifejtés eredménye:

jmp FIRST

Elj2 proc ; eljárás deklaráció

...

ret

Elj2 endp

FIRST: call Elj2 ; eljárás hívás

CALLELJ2 MACRO ; belső makró definíció

call Elj2 ; eljárás hívás

ENDM ; belső makró definíció

vége

Page 62: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 62

A kifejtés CALLELJ2 újabb definícióját tartalmazza, ez felülírja az eredeti definíciót, és a továbbiak során ez a definíció érvényes. Ez alapján a későbbi CALLELJ2 hívások esetén

call Elj2

a kifejtés eredménye.

Megjegyezzük, hogy most is szerencsésebb lett volna a FIRST címkét lokálissá tenni. Igaz, hogy csak egyszer generálódik, de így a CALLELJ2 makró használójának tudnia kell, hogy a FIRST címke már „foglalt”!

Page 63: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 63

Ha egy M_név makró definíciójára nincs szükség a továbbiak során, akkor a

PURGE M_név

pszeudo utasítással kitörölhetjük.

Page 64: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 64

Blokk ismétlés

Nemcsak a blokk definíciójának kezdetét jelölik ki, hanem a kifejtést (hívást) is előírják. A program más részéről nem is hívhatók.

Blokk ismétlés kifejezés-szer:

REPT kifejezés

... ; ez a rész ismétlődik

ENDM

Page 65: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 65

A korábbi megoldás:

KOPOG macro n

LOCAL ujra

mov cx,n

ujra: KOPP

loop ujra

endm

REPT N

KOPP

ENDM

Ha pl. N=3, akkor ennek a hatására a

KOPP

KOPP

KOPP

makró hívások generálódnak.

A korábban ismertetett kopogást így is megoldhattuk volna:

Megjegyzés: Most N nem lehet változó – fordítási időben ismert kell legyen az értéke!

Page 66: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 66

Blokk ismétlés argumentum lista szerint:

IRP par, <arg1[,arg2...]>... ; ez a rész többször bemásolásra ... ; kerül úgy, hogy par rendre... ; fölveszi az arg1,arg2... értéketENDM

IRP x, <1,2,3>db xENDM

db 1db 2db 3

Page 67: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 67

Blokk ismétlés string alapján:

IRPC par,string... ; ez a rész kerül többször bemásolásra

úgy, ... ; hogy par rendre fölveszi ... ; a string karaktereitENDM

Ezt a string-et nem kell idézőjelek közé tenni (újabb ismétlés jelentene). Ha a string-en belül pl. szóköz vagy , is előfordul, akkor <> jelek közé kell tenni.

Az előző feladatot így is megoldhattuk volna:

IRPC x,123db xENDM

Page 68: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 68

Másik példa:

IRPC x,ABCDEFGHIJKLMNOPQRSTUVWXYZdb ’&x’ ;; nagy betűkdb ’&x’+20h ;; kis betűkENDM

Hatása:db ’A’db ’A’+20h a kódja. . .db ’Z’db ’Z’+20h z kódja

Fontos az & jel, nélküle ’x’-ben x nem paraméter, hanem string lenne!

Page 69: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 69

Makró definíció tartalmazhat blokk ismétlést, és blokk ismétlés is tartalmazhat makró definíciót vagy makró hívást.

Pl.: A bit léptető és forgató utasítás kiterjesztésnek egy újabb megoldása:

; makrót definiáló blokkismétlés IRP OP,<RCR,RCL,ROR,ROL,SAR,SAL>

OP&S MACRO OPERANDUS,N mov cl, N OP OPERANDUS,cl ENDM ENDM

Ennek a megoldásnak előnye, hogy nem kell külön meghívnunk a külső makrót az egyes utasításokkal, mert ezt elvégzi helyettünk az IRP blokk ismétlés.

Page 70: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 70

; makrót definiáló blokkismétlés IRP OP,<RCR,RCL,ROR,ROL,SAR,SAL>

OP&S MACRO OPERANDUS,N mov cl, N OP OPERANDUS,cl ENDM ENDM

hatása:

RCRS MACRO OPERANDUS,N mov cl, N RCR OPERANDUS,cl ENDM

RCLS MACRO OPERANDUS,N...

Page 71: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 71

FeladatokMilyen utasítások érhetők el operációs rendszer

szinten?Mi az overlay technika lényege?Mi a virtuális címtartomány?Mi a fizikai címtartomány?Mi a lap és mi a lapkeret?Mi a lapozás?Mi a memória térkép (laptábla)?Mi az MMU?Hogy működik az asszociatív memória?Mi a laphiány?Mi a kérésre lapozás?Mi a munka halmaz (working set)?

Page 72: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 72

FeladatokMikor alakul ki vergődés?Milyen lapkezelési eljárásokat ismer?Mi a belső elaprózódás?Mi az előnye, és mi a hátránya a kis lapméretnek?Mit nevezünk szegmentálásnak?Hogy valósítható meg a szegmentálás?Mik a szegmentálás előnyei? Mi a külső elaprózódás?Mi az összepréselés (compaction)?Hogy valósul meg a szegmens címzés a Pentium 4-en?Mi a szelektor?Milyen információt tartalmaz a Pentium 4 szelektora?Milyen mezőket tartalmaz a kódszegmensek leírója?

Page 73: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 73

FeladatokMire szolgál az LDT (Local Descriptor Table) és a

GDT (Global Descriptor Table)? Hogy képződik a lineáris cím?Hogy valósul meg Pentium 4-en a virtuális címzés?Milyen a Pentium 4 védelmi rendszere?Hogy hívható más védelmi szintű eljárás?Jellemezze az UltraSparc III virtuális memóriáját!Mi a TLB (Translation Lookaside Buffer)?Milyen memóriában van a TLB?Mi történik TLB hiány esetén?Hogy szervezett a TSB (Translation Storage Buffer)?Mi történik TSB hiány esetén?Hasonlítsa össze a virtuális memóriát a gyorsító tárral!

Page 74: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 74

FeladatokHasonlítsa össze a makrót az eljárással!Mikor célszerű makrót alkalmazni eljárás helyett?Mi a makro definíció?Mi a makró fej? Mi a makró törzs? Mi a makró hívás?Mi a makró kifejtés?Mi a (formális) paraméter?Mi az aktuális paraméter (argumentum)? Mely karakterek játszanak speciális szerepet makró

kifejtéskor?Melyik karakternek mi a szerepe? Adjon példát rájuk!Mi a szerepe a LOCAL pszeudó utasításnak?

Page 75: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 75

FeladatokAdjon példát makró hívást tartalmazó makró

definícióra!Adjon példát makró definíciót tartalmazó makró

definícióra!Mit kell tudni azokról a makró definíciókról, amelyek

egy másik makró definícióban találhatók?Adjon példát olyan makró definícióra, amely

tartalmazza saját hívását!Adjon példát olyan makró definícióra, amely

tartalmazza saját átdefiniálását!Mit kell tudni az önmaguk átdefiniálását tartalmazó

makró definíciókról?Mi a hatása a PURGE pszeudó utasításnak?

Page 76: Operációs rendszer szintje Operating System Machine (OSM)

Máté: Architektúrák 10. előadás 76

FeladatokMit jelent a blokk ismétlés?Milyen blokk ismétlési lehetőségeket ismer?Mi a REPT pszeudó utasítás általános alakja?Mi az IRP pszeudó utasítás általános alakja?Mi az IRPC pszeudó utasítás általános alakja?Mondjon példát makrót definiáló blokkismétlésre!