View
25
Download
0
Category
Preview:
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
Citation preview
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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)
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
Recommended