megszakítások és kivételek

26
Megszakítások és kivételek

Upload: earl

Post on 20-Jan-2016

25 views

Category:

Documents


0 download

DESCRIPTION

Megszakítások és kivételek. Megszakítások. Megszakítás – a számítási rendszernek küldött jelzés, mely valamilyen esemény felléptéről értesíti. Egy megszakítás felléptekor a rendszer: megszakítja az aktív program futását végrehajtja az eseményt kezelő handlert - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Megszakítások és kivételek

Megszakítások és kivételek

Page 2: Megszakítások és kivételek

Megszakítások

• Megszakítás – a számítási rendszernek küldött jelzés, mely valamilyen esemény felléptéről értesíti.

• Egy megszakítás felléptekor a rendszer:– megszakítja az aktív program futását– végrehajtja az eseményt kezelő handlert– folytatja a megszakított programot.

Page 3: Megszakítások és kivételek

Megszakítások és kivételek

• hard megszakítás – aszinkron – egy külső esemény váltja ki: billentyűzet, órajel, ki/bemeneti művelet befejezése, stb.

• kivétel – szinkron – egy belső esemény váltja ki:– trap – a program a megszakítást kiváltó utasítás utáni

utasítással folytatódik – trap, rendszerhívások, stb.

– fault – a program a megszakítást kiváltó utasítással folytatódik, vagy abortál – page fault, 0-val való osztás, stb.

– abort – a program hibajelzéssel befejeződik – hard hibák, stb.

Page 4: Megszakítások és kivételek

Intel processzorok

• 256 lehetséges megszakítás és kivétel– 0-1F a processzornak fenntartott– 20-0FF felhasználó által használható

• az operációs rendszer definiálja a kivételek nagy részét

• a szabadon maradt megszakításokat a felhasználó definiálhatja

Page 5: Megszakítások és kivételek

Megszakítások kezelése (1)

• minden fellépő eseménynek egy eljárás felel meg, amely feldolgozza az adott eseményt

• a megszakítás rutinok far címe:– védett üzemmódban a IDT deszkriptortáblában– normál üzemmódban a megszakításvektorban

(0000 címtől)

• az operációs rendszer különböző verzióiban a rutinok címe változik

Page 6: Megszakítások és kivételek

Megszakítások kezelése (2)• egy megszakítás rutin feladatai:

– a program állapotának kimentése

– újabb megszakítások letiltása

– a megszakítás kiszolgálása

– új megszakítások engedélyezése

– a megszakított program folytatása

• rendszerhívások esetén nem szükséges minden regiszter tartalmának a visszaállítása (paraméterek visszaadása)

• kivételek esetén gyakran nem folytatódik a megszakított program

Page 7: Megszakítások és kivételek

DOS megszakítások

• Microsoft nem tartja be az Intel előírásokat

• a processzornak fenntartottmegszakításokat más célokra használja

• védett üzemmódban ugyanaz a megszakítás egész más funkciót lát el, mint normál üzemmódban

Page 8: Megszakítások és kivételek

Hard megszakítások és kivételek

• mikroprocesszor által kiváltott:– INT 00h – 0-val való osztás– INT 01h – trace – minden utasítás után, ha TF=1– INT 04h – aritmetikai túlcsordulás

• memória– INT 02h – paritáshiba (RAM) – nem maszkolható

• óra– INT 08h – 18,2-szer másodpercenként

• más felszerelések– INT 09h – billentyűzet, minden billentyű lenyomásakor

illetve elengedéskor, a billentyű kódja kerül a pufferbe– INT 05h – print screen

Page 9: Megszakítások és kivételek

BIOS rutinok• egyszerű eljárások

– INT 11h – konfiguráció lekérdezése– INT 12h – memóriaméret lekérdezése– INT 14h – soros vonalak kezelése– INT 1Bh – <Ctrl><Break> billentyű kezelése

• komplex BIOS funkciók– egy megszakítás valamilyen hard eszközt kezel– több funkció, az AH regiszter választja ki– paraméterek a regiszterekben

Page 10: Megszakítások és kivételek

BIOS rutinok – INT 10h• INT 10h – képernyő kezelése

– AH=00h – megjelenítési mód beállítása• AL – mód

– AH=02h – kurzor pozíciójának beállítása • DH – sor; DL – oszlop; BH – lap száma

– AH=03h – kurzor pozíciójának lekérdezése• BH – lap száma

– AH=05h – aktív lap kiválasztása• AL – lap száma

– AH=08h – kurzor pozíciójában levő karakter lekérdezése• BH – lap száma, AH – kar. kódja, AL - attribútuma

– AH=09h – karakter írása attribútum információkkal• BH – lap sorszáma, háttérszín, CX – ismétlések, AL – kar kód,

BL – attribútum, előtér szín

Page 11: Megszakítások és kivételek

BIOS rutinok – INT 13h• INT 13h – lemezegységek kezelése

– bemenő paraméterek• AL – átviendő szektorok száma

• ES:BX – a memóriaterület címe

• CL – kezdő szektor száma, sáv számának felső két bitje

• CH – sáv számának alsó nyolc bitje

• DL – lemezegység kódja

• DH – fej száma

– kimenő paraméterek• AH – hibakód

• CF – hiba esetén 1

• állítja a 0000:441h címen levő hibakódot

Page 12: Megszakítások és kivételek

BIOS rutinok – INT 13h

• fontosabb funkciók:– AH=02h – szektorok olvasása– AH=03h – szektorok írása– AH=04h – szektorok ellenőrzése– AH=05h – sáv formázása– AH=08h – meghajtó paramétereinek lekérdezése– AH=15h – lemezmeghajtó típusának lekérdezése

Page 13: Megszakítások és kivételek

Más BIOS rutinok

• INT 16h – billentyűzet kezelése

• INT 19h – rendszer újraindítása

• INT 1Ah – időzítő egység kezelése

• INT 17h – párhuzamos illesztők kezelése

Page 14: Megszakítások és kivételek

BIOS adatszerkezetek címei

• adatszerkezetek címei– INT 1Dh – video paraméterek táblázatának címe– INT 1Eh – floppy egységek paraméterei táblázatának

címe– INT 41h – első merevlemez paramétertábla címe– INT 43h – EGA, VGA grafikuskarakter tábla címe– INT 46h – második merevlemez paramétertábla címe

• a BIOS rutinok adatok tárolására felhasználják a 0000:0400 – 0000:04FF memóriaterületet is

Page 15: Megszakítások és kivételek

DOS rutinok

• logikai szintű periféria kezelés

• a különböző DOS megszakítások helyett a 21h megszakítás funkcióit használjuk

Page 16: Megszakítások és kivételek

INT 21h – karakteres ki/bemenet• AH=01h – karakter olvasása megjelenítéssel

– AL – beolvasott karakter

• AH=02h – kiírás a képernyőre– DL – kiírandó karakter

• AH=05h – kiírás a nyomtatóra– DL – kiírandó karakter

• AH=06h – közvetlen konzol ki-bemenet• AH=07h – közvetlen konzol olvasás (echo nélkül)• AH=08h – billentyűzet olvasás echo nélkül• AH=09h – karakterlánc kiírása

– DS:DX – karakterlánc címe, utolsó karakter „$”

• AH=0Ah – karakterlánc olvasása– DS:DX – input puffer címe, első byte – max. hossz, 2. byte –

tenylegesen beolvasott byte-ok száma, Enter-ig olvas

Page 17: Megszakítások és kivételek

INT 21h – memória kezelés

• AH=48h – memória blokk lefoglalása

• AH=49h – memória blokk felszabadítása

• AH=4Ah – memória blokk méretének változtatása

Page 18: Megszakítások és kivételek

INT 21h – folyamatok vezérlése

• AH=4Bh – program betöltése, indítása• AH=4Ch – program befejezése kilépési kóddal (exit code)

– AL – kilépési kód

• AH=31h – rezidens befejezés– AL – kilépési kód,

– DX a program mérete paragrafusokban

• AH=4Dh – előző program kilépési kódjának lekérdezése– AL – folyamat kilépési kódja,

– AH – folyamat befejezésének oka

Page 19: Megszakítások és kivételek

INT 21h – lemezkezelés

• AH=19h – aktuális meghajtó lekérdezése– AL – 00h-A; 01h-B; stb.

• AH=1Ah – DTA (Data Transfer Area) címének beállítása

• AH=1Bh – aktív lemezegység paramétereinek lekérdezése

Page 20: Megszakítások és kivételek

INT 21h – directorykezelés

• AH=39h – alkatalógus létrehozása– DS:DX – alkatalógus nevének címe 00h-val

lezárva– CF – 1, hiba; AX – hibakód

• AH=3Ah – alkatalógus törlése• AH=3Bh –váltása (change dir.)• AH=4Fh – aktív katalógus lekérdezése

– DL – lemezegység száma– DS:SI – 64 byte-os puffer címe, ahol

megkapjuk az aktív katalógus nevét

Page 21: Megszakítások és kivételek

INT 21h – állománykezelés (1)• AH=3Ch – állomány létrehozása file-számmal• AH=3Dh – állomány megnyitása file-számmal

– AL – megnyitási mód, DS:DX – 00h-val lezárt string címe (file neve)

– CF=1 – hiba, AX – fileszám vagy hibakód

• AH=3Eh – állomány bezárása file-számmal– BX – fileszám– CF=1 – hiba, AX – hibakód

• AH=3Fh – állomány olvasása file-számmal• AH=40h – állomány írása file-számmal

Page 22: Megszakítások és kivételek

INT 21h – állománykezelés (2)

• AH=41h – állomány törlése file névvel– DS:DX – 00h-val lezárt string címe (file neve)

• AH=4Eh – első file keresése

• AH=4Fh – következő file keresése

• AH=56h –file átnevezése, mozgatása– DS:DX – 00h-val lezárt string címe (file régi neve)– ES:DI – 00h-val lezárt string címe (file új neve)

Page 23: Megszakítások és kivételek

INT 21h – más funkciók • AH=30h – DOS verziószámának lekérdezése• AH=2Ah – rendszerdátum lekérdezése• AH=2Bh – rendszerdátum beállítása• AH=2Ch – rendszeridő lekérdezése• AH=2Dh – rendszeridő beállítása• AH=35h – megszakításvektor lekérdezése

– AL – megszakítás száma

– ES:BX – megszakítás far címe

• AH=25h – megszakításvektor beállítása– AL – megszakítás száma

– DS:DX – új eljárás far címe

Page 24: Megszakítások és kivételek

Megszakítás eltérítése (1)

• egy megszakítást eltérítő rezidens program szerkezete:

start: JMP initresz

indul:

initresz:

rezidens rész adatzóna

rezidens rész kód

inicializáló rész kód és adatok

Page 25: Megszakítások és kivételek

Megszakítás eltérítése (2)• Az inicializáló részt úgy hajtjuk végre,mint egy

megszokott programot• Feladatai:

– ellenőrzi, hogy a rezidens rész nincs-e már a memóriában

– beolvassa és elmenti a megszakítás eredeti kezdőcímét

– módosítja a megszakításvektort (beírja a megszakítást kezelő új eljárás kezdőcímét)

– inicializálja a rezidens rész adatzónáját, ha szükséges

– befejezi működését rezidens kilépéssel (DX regiszterben a rezidens eljárás hossza, a program elejétől az inicializáló részig paragrafusokban megadva)

Page 26: Megszakítások és kivételek

Megszakítás eltérítése (3)

• ha a megszakítás eltérítése csak egy adott programban szükséges, nem installáljuk rezidensként az adott eljárást

• a megszakítást kezelő eljárás a program szerves része

• a program befejezése előtt visszaállítjuk az eredeti megszakítás címét