1 / 26

Megszakítások és kivételek

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

earl
Download Presentation

Megszakítások és kivételek

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Megszakításokés kivételek

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

More Related