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

Slides:



Advertisements
Hasonló előadás
Koordináták, függvények
Advertisements

Nevezetes algoritmusok
Adatbázisrendszerek elméleti alapjai 2. előadás
A számítógép műszaki, fizikai része
Feltételezett végrehajtás (Speculative Execution) ábra
A mikroprocesszor 1. rész.
Műveletek logaritmussal
Lapcsere stratégiák FIFO, LRU, OPT, SC
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Adatbázisrendszerek elméleti alapjai 6. előadás
Euklidészi gyűrűk Definíció.
Táblázat kezelő programok
Adatbázisrendszerek elméleti alapjai 5. előadás
Operációs rendszerek / II. félév. MEMÓRIAGAZDÁLKODÁS A memória hierarchikus szerveződése: –cache memória –központi memória (RAM) –lemezes tároló.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Adatbázis-kezelés.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Operációs rendszer szintje Operating System Machine (OSM)
Máté: Orvosi képfeldolgozás1. előadás1. Máté: Orvosi képfeldolgozás1. előadás2 A leképezés fizikai alapjai Fény, fénykép, mikroszkóp Röntgen sugárzás.
Máté: Architektúrák12. előadás1 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.
Mutatók, tömbök, függvények
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
A memória.
Utasítás végrehajtás lépései
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Számítógép memória jellemzői
Fuzzy halmazok. 4. előadás2 3 4 Egy hagyományos halmazEgy Fuzzy halmaz.
A memóriák típusai, jellemzői
Memória hierarchia Tárolókezelő egység
Microsoft Excel Függvények VII..
Fixpontos, lebegőpontos
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áté: Architektúrák9. előadás1 Történeti áttekintés Kezdetben: kevés, egyszerű utasítás. Később: sok, egyre összetettebb utasítás. IBM 360-as család. Lefelé.
Számítógép architektúra Címzésmódok. 2007Címzésmódok2-21 Operandusok egy operandus hossza lehet: –1 byte –2 byte (szó) –4 byte egy operandus lehet: –az.
Számítógép architektúra
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Számítógép architektúrák
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
13. A zillmerezés, mint bruttó
Máté: Architektúrák10. előadás1 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.
A Mikroprocesszor Harmadik rész.
Objektum orientált programozás
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
Az internetes keresési módszerek
Osztott adatbázisok.  Gyors ismétlés: teljes redukáló  Teljes redukáló költsége  Természetes összekapcsolások vetítése  Természetes összekapcsolások.
Gazdasági informatikus - Szövegszerkesztés 1 Hosszú dokumentumok kezelése.
Mikroökonómia gyakorlat
Ismerkedjünk tovább a számítógéppel
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 7. előadás.
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 8. előadás.
C Programozási alapok.
Írja fel a tizes számrendszerbeli
Máté: Architektúrák9. előadás1 Feltételes fordítás A fordító programok általában – így az assembler is – feltételes fordítási lehetőséget biztosít. Ez.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Memória példák Feladat Egy számítógép rendszermemóriája egycsatornás, 64 bites adategységekkel rendelkező DDR1-DRAM-ra épül, melyben a burst.
HEFOP 3.3.1–P /1.0A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. 1 Számítógép architektúrák dr. Kovács.
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Memóriakezelés feladatok. 1.Feladat Legyenek a virtuális címek 16 bitesek, a fizikai címek 15 bitesek, a lapméret legyen 2 12 bájt = 4 kB méretű, a laptábla.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Programstruktúrák. Program A program utasítások olyan sorozata, amely a számítógépen önállóan képes megoldani egy feladatot. A program háttértáron futtatható.
Memóriakezelés feladatok A jegyzet 2015-ös változata szerinti számozással.
a programegységek között
Változók.
Számítógép architektúrák
Memória példák 2019.
Cache példák 2019 (IMSC).
Előadás másolata:

Máté: Architektúrák10. 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).

Máté: Architektúrák10. 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 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).

Máté: Architektúrák10. előadás3 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.

Máté: Architektúrák10. előadás4 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? LapVirtuális címek N- ……-… LapkeretFizikai címek n- ……-…

Máté: Architektúrák10. előadás5 1.Egy lapkeret (pl. a ) 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 … Fizikai címtartomány … leképezés 6.2. ábra

Máté: Architektúrák10. előadás6 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).

Máté: Architektúrák10. előadás7 Asszociatív memória kulcsmező kulcs össze- hasonlító szelektor tartalom össze- hasonlító tartalom szelektor

Máté: Architektúrák10. előadás8 Jelenlét/hiány (present/absent) … … bites virtuális lapszám 12 bites offset 32 bites virtuális cím bites fizikai cím 6.4. ábra Laptábla

Máté: Architektúrák10. előadás9 … fizikai memória 6.5. ábra Laptábla … 6. virtuális lap7 5. virtuális lap6 11. virtuális lap5 14. virtuális lap4 8. virtuális lap3 3. virtuális lap2 0. virtuális lap1 1. virtuális lap0 lap keret virtuális lap lap keret

Máté: Architektúrák10. előadás10 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.

Máté: Architektúrák10. előadás11 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 lap 6. Virtuális lap 5. Virtuális lap 4. Virtuális lap 3. Virtuális lap 2. Virtuális lap 1. Virtuális lap 0. Virtuális lap 7. Virtuális lap 6. Virtuális lap 5. Virtuális lap 4. Virtuális lap 3. Virtuális lap 2. Virtuális lap 1. Virtuális lap 8. Virtuális lap 7. Virtuális lap 6. Virtuális lap 5. Virtuális lap 4. Virtuális lap 3. Virtuális lap 2. Virtuális lap 0. Virtuális lap 8. Virtuális lap

Máté: Architektúrák10. előadás12 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.

Máté: Architektúrák10. előadás13 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 is, viszont kisebb a vergődés kialakulásának valószínűsége.

Máté: Architektúrák10. előadás14 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ábla Forrás szöveg Szimbólum tábla Virtuális címtartomány Szabad Jelenleg használt

Máté: Architektúrák10. előadás15 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

Máté: Architektúrák10. előadás16 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ó …

Máté: Architektúrák10. előadás17 A szegmentálás és a virtuális memória összehasonlítása (6.9. ábra) SzempontokLapozásSzegmentálás Tudnia kell róla a programozónak?NemIgen Hány lineáris címtartomány létezik? 1Több Meghaladhatja-e a virtuális címtartomány nagysága a fizikai memória méretét? Igen Könnyen kezelhetők a változó méretű táblák? NemIgen Mi ennek a technikának a lényege? Nagy memória szimulálása Több címtartomány biztosítása

Máté: Architektúrák10. előadás18 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.

Máté: Architektúrák10. előadás19 Ö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 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 7. 5 K 0. 4 K 2. 5 K 6. 4 K 5. 4 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 K 5 K 4 K

Máté: Architektúrák10. előadás20 Pentium 4 ( ábra) A szegmens regiszter tartalmazza a szelektort Index 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: GDT 1: LDT Védelmi szint: 0-3 Szelektor:

Máté: Architektúrák10. előadás21 Ha P=0, csapda:nem létező szegmens, vagy be kell tölteni a szegmenst. BASE 0-15LIMIT 0-15 B 24-31G D 0L 16-19PDPLTYPEB : LIMIT értéke bájtokban 1: 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ában 1: a szegmens a memóriában van Pentium 4 kódszegmensének leírója (6.13. ábra)

Máté: Architektúrák10. előadás á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ó +

Máté: Architektúrák10. előadás23 Lapkönyvtár (page directory á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ím DIRPAGEOFF Lapkönyvtár 1023 … bit Laptábla 1023 … bit Lapkeret 32 bit

Máté: Architektúrák10. előadás24 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.

Máté: Architektúrák10. előadás25 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) szint A szintek egy lehetséges felhasználása: Felhasználói programok Osztott könyvtár Rendszer hívások Kernel

Máté: Architektúrák10. előadás26 Az UltraSPARC III virtuális memóriája Virtuális cím 64 bites, egyelőre 44 bitre korlátozva Virtuális címtartomány megengedett 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.

Máté: Architektúrák10. előadás27 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 KB51 (31)13 → KB48 (28)16 → KB45 (25)19 → MB42 (22)22 → bitre korlátozva maximum 41 bit

Máté: Architektúrák10. előadás28 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).

Máté: Architektúrák10. előadás29 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ényes Virtuális lap Környezet Fizikai lapkeret Flag-ek Kulcs

Máté: Architektúrák10. előadás30 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

Máté: Architektúrák10. előadás31 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.

Máté: Architektúrák10. előadás32 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).

Máté: Architektúrák10. előadás33 Makró és blokk ismétlés Makró definíció: M_névMACRO[fpar1[,fpar2...]] ; makró fej (kezdet)...; makró törzs ENDM; 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.

Máté: Architektúrák10. előadás34 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.

Máté: Architektúrák10. előadás35 Dupla szavas összeadás: (DX:AX)  (DX:AX)+(CX:BX) Eljárás deklaráció: EDADDPROCNEAR ADDAX,BX ADCDX,CX RET EDADDENDP Makró definíció: MDADDMACRO ADDAX,BX ADCDX,CX ENDM

Máté: Architektúrák10. előadás36 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: CALLEDADD 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: ADDAX,BX ADCDX,CX Futás közben ez a két utasítás kerül csak végrehajtásra.

Máté: Architektúrák10. előadás37 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:

Máté: Architektúrák10. előadás38 Eljárás deklaráció: EDADD2PROCNEAR PUSHBP MOVBP,SP ADDAX,4[BP] ADCDX,6[BP] POPBP RET4 EDADDENDP Eljárás hívás: Ha SI az összeadandónk címét tartalmazza, akkor a felhívás: PUSH2[SI] PUSH[SI] CALLEDADD2 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

Máté: Architektúrák10. előadás39 Most sem része a makró definíció a lefordított programnak. Makró definíció: MDADD2MACROP IFB  P  ADDAX,BX ADCDX,CX ELSE ADDAX,P ADCDX,P+2 ENDIF ENDM Makró hívás: MDADD2[SI] Fordítás közben a hívás az ADDAX,[SI] ADCDX,[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: ADDAX,BX ADCDX,CX

Máté: Architektúrák10. előadás40 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.

Máté: Architektúrák10. előadás41 Paraméter másutt is előfordulhat a makró törzsben, nemcsak az operandus részen, pl.: PLmacrop1,P2 movax,p1 P2p1 endm PLAdat, INC hatása: movax,Adat INCAdat

Máté: Architektúrák10. előadás42 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: errgenmacroy, x err&ydb’Error &y: &x’ endm errgen5, hatása: err5db’Error 5: Unreadable disk’

Máté: Architektúrák10. előadás43 <> (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: errgen5, Unreadable disk kifejtve: err5db’Error 5: Unreadable’ adatmacrop dbp endm adat adat’abc’,13,10,0 kifejtve: db’abc’,13,10,0 db’abc’

Máté: Architektúrák10. előadás44 ! (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ó errgen103, 255> hívásának hatása: err103db’Error 103: Expression > 255’ de errgen103, 255> hívásának hatása: err103db’Error 103: Expression ’

Máté: Architektúrák10. előadás45 % (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.: sym1equ100 sym2equ200 txtequ’Ez egy szöveg’ kifmacroexp, val db”&exp = &val” endm kif, %(sym1+sym2) kiftxt, %txt db”sym1+sym2 = 300” db”txt = ’Ez egy szöveg’”

Máté: Architektúrák10. előadás46 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 ErrMsgMACROtext s=s+1 Msg%s,text ENDM MsgMACROsz,str msg&szdbstr ENDM

Máté: Architektúrák10. előadás47 s=0 ErrMsgMACROtext s=s+1 Msg%s,text ENDM MsgMACROsz,str msg&szdbstr 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) az s=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: msg1db’syntax error ’

Máté: Architektúrák10. előadás48 s=0 ErrMsgMACROtext s=s+1 Msg%s,text ENDM MsgMACROsz,str msg&szdbstr ENDM Egy újabb hívás és hatása: ErrMsg ’invalid operand’ msg2db’invalid operand’

Máté: Architektúrák10. előadás49 ;; (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.

Máté: Architektúrák10. előadás50 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 n LOCAL ujra movcx,n ujra:KOPP loopujra endm 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.

Máté: Architektúrák10. előadás51 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.: shiftsmacroOPNAME; makrót ; definiáló makró OPNAME&SMACROOPERANDUS,N movcl, N OPNAMEOPERANDUS,cl ENDM endm

Máté: Architektúrák10. előadás52 shiftsmacroOPNAME; makrót ; definiáló makró OPNAME&SMACROOPERANDUS,N movcl, N OPNAMEOPERANDUS,cl ENDM endm Ha ezt a makrót felhívjuk pl.: shifts ROR akkor a RORSMACROOPERANDUS,N movcl, N ROROPERANDUS,cl ENDM makró definíció generálódik.

Máté: Architektúrák10. előadás53 RORSMACROOPERANDUS,N movcl, N ROROPERANDUS,cl ENDM Mostantól meghívható a RORS makró is, pl.: RORSAX, 5 aminek a hatása: movcl, 5 RORAX,cl

Máté: Architektúrák10. előadás54 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). PUSHALLmacroreg1,reg2,reg3,reg4,reg5 IFNB ;; ha a paraméter nem üres pushreg1;; az első regiszter mentése PUSHALLreg2,reg3,reg4,reg5 ;; rekurzió ENDIF ENDM Most pl. a PUSHALLax, bx, cx makró hívás hatása: pushax pushbx pushcx

Máté: Architektúrák10. előadás55 PUSHALLmacroreg1,reg2,reg3,reg4,reg5 IFNB ;; ha a paraméter nem üres pushreg1;; az első regiszter mentése PUSHALLreg2,reg3,reg4,reg5 ;; rekurzió ENDIF ENDM PUSHALLax, bx, cx makró hívás hatása: pushax PUSHALLbx, cx az újabb hívás hatása: pushbx PUSHALLcx az újabb hívás hatása: pushcx PUSHALL ennek hatására nem generálódik semmi.

Máté: Architektúrák10. előadás56 FL_CALLELJ=0 CALLELJmacro ;; Eljárást beépítő és felhívó makró LOCALFIRST;; nem lenne fontos IFFL_CALLELJ;; a 2. hívástól igaz callElj;; elég felhívni az eljárást EXITM;; makró helyettesítés vége ENDIF FL_CALLELJ=1;; csak az első híváskor JMPFIRST;; jut érvényre Eljproc;; eljárás deklaráció... ret Eljendp FIRST:callElj;; az eljárás felhívása endm

Máté: Architektúrák10. előadás57 Az első CALLELJ hívás hatására az FL_CALLELJ=1 JMP??0000 Eljproc... ret Eljendp ??0000:callElj utasítások generálódnak (??0000 a FIRST -ből keletkezett).

Máté: Architektúrák10. előadás58 A további CALLELJ hívások esetén csak egyetlen utasítás, a callElj 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.

Máté: Architektúrák10. előadás59 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!

Máté: Architektúrák10. előadás60 Önmagát „átdefiniáló” makró (az előző feladat másik megoldása): CALLELJ2macro; külső makró definíció jmpFIRST Elj2proc; eljárás deklaráció... ret Elj2endp FIRST:callElj2; eljárás hívás CALLELJ2MACRO; belső makró definíció callElj2; eljárás hívás ENDM; belső makró definíció vége endm; külső makró definíció vége

Máté: Architektúrák10. előadás61 CALLELJ2 első hívásakor a kifejtés eredménye: jmpFIRST Elj2proc; eljárás deklaráció... ret Elj2endp FIRST:callElj2; eljárás hívás CALLELJ2MACRO; belső makró definíció callElj2; eljárás hívás ENDM ; belső makró definíció vége

Máté: Architektúrák10. előadás62 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 callElj2 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”!

Máté: Architektúrák10. előadás63 Ha egy M_név makró definíciójára nincs szükség a továbbiak során, akkor a PURGEM_név pszeudo utasítással kitörölhetjük.

Máté: Architektúrák10. előadás64 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: REPTkifejezés...; ez a rész ismétlődik ENDM

Máté: Architektúrák10. előadás65 A korábbi megoldás: KOPOGmacro n LOCAL ujra movcx,n ujra:KOPP loopujra endm REPTN KOPP ENDM Ha pl. N=3, akkor ennek a hatására a 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!

Máté: Architektúrák10. előadás66 Blokk ismétlés argumentum lista szerint: IRPpar,...; ez a rész többször bemásolásra...; kerül úgy, hogy par rendre...; fölveszi az arg1,arg2... értéket ENDM IRPx, dbx ENDM db1 db2 db3

Máté: Architektúrák10. előadás67 Blokk ismétlés string alapján: IRPCpar,string...; ez a rész kerül többször bemásolásra úgy,...; hogy par rendre fölveszi...; a string karaktereit ENDM 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: IRPCx,123 dbx ENDM

Máté: Architektúrák10. előadás68 Másik példa: IRPCx,ABCDEFGHIJKLMNOPQRSTUVWXYZ db’&x’;; nagy betűk db’&x’+20h;; kis betűk ENDM Hatása: db’A’ db’A’+20ha 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!

Máté: Architektúrák10. előadás69 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 IRPOP, OP&S MACROOPERANDUS,N movcl, N OPOPERANDUS,cl 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.

Máté: Architektúrák10. előadás70 ; makrót definiáló blokkismétlés IRPOP, OP&S MACROOPERANDUS,N movcl, N OPOPERANDUS,cl ENDM hatása: RCRS MACROOPERANDUS,N movcl, N RCROPERANDUS,cl ENDM RCLS MACROOPERANDUS,N...

Máté: Architektúrák10. előadás71 Feladatok Milyen 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)?

Máté: Architektúrák10. előadás72 Feladatok Mikor 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?

Máté: Architektúrák10. előadás73 Feladatok Mire 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!

Máté: Architektúrák10. előadás74 Feladatok Hasonlí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?

Máté: Architektúrák10. előadás75 Feladatok Adjon 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?

Máté: Architektúrák10. előadás76 Feladatok Mit 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!