Tartalmi kivonat
1. 7 Fejezet: Megszakítás Bevezető főfejezetünk utolsó pontjaként következzen egy nagyon fontos folyamat az informatika világából, a megszakítás. A megszakítás tulajdonképpen nem más mint egy már futó folyamat felfüggesztése egy másik futtatni kívánt folyamat érdekében. Ebben segít a számítógépek megszakítási rendszere Maga a megszakítás két módon keletkezhet: • Hardveres úton. Itt maguk a hardver elemek végzik el ezt a feladatkört A szoftveres megszakítással szemben a hardver elemek megszakítási csatornákat használnak (teljes nevén InterRupt Queue (IRQ)), így biztosabban végrehajthatják a műveletet. Új hardverelem telepítésekor a felhasználó feladata, hogy ügyeljen arra: két vagy több hardver elem ne használhassa ugyanazon megszakítási csatornát, ugyanis ez hardverkonfrontálódáshoz vezethet, és előfordulhat, hogy egyik egység sem lesz használható. Érdemes megjegyezni, hogy bizonyos hardverhibák keletkezésekor
nem maszkolható megszakítások jönnek létre (teljes nevén Non Maskable Interrupt (NMI)), azaz olyanok, amelyek kezelésére a számítógép nincs felkészítve. Az alábbi táblázat az egyes hardver elemek megszakítási vektorait tartalmazza (a megszakítások az alaplapon elhelyezett ROM BIOS (teljes nevén Read Only Memory Basic Input Output System) egységben található (később még mindkettőről szó lesz)): Megszakítási Vektor 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Hardver Neve Az időzítő megszakítása A billentyűzet megszakítása XT számítógépek bővítőbuszának megszakítása A COM2-es port megszakítása A COM1-es port megszakítása Az LPT2-es port megszakítása A hajlékonylemezes meghajtó megszakítása Az LPT1-es port megszakítása A valós idejű óra megszakítása AT számítógépek XT módban való működésének megszakítása Általános hardver megszakítás AT számítógépek esetén Általános hardver megszakítás AT
számítógépek esetén Általános hardver megszakítás AT számítógépek esetén A numerikus processzor megszakítása A merevlemezes meghajtó megszakítása Általános hardver megszakítás AT számítógépek esetén Programozási oldalról tekintve a megszakításokat, megállapítható, hogy a számítógép 256 különböző egyenként 4 byte-os - úgynevezett interruptcímet különböztethet meg. Ezek a 0000 : 000016 memóriacímtől kezdődnek. Az alábbi táblázat összefoglalja a legfontosabbakat, amelyek megszakítási rutincímeket azonosítanak. Interrupt Sorszám 00 01 02 03 04 05 08 09 0B 0C Rutin Megnevezése Processzor Megszakítások Osztási túlcsordulás Lépésenkénti megszakítás Nem maszkolható megszakítás Töréspont Túlcsordulási rutin hívása Alapvető ROM BIOS Megszakítás Képernyőnyomtatás a PrintScreen billentyű segítségével Hardver Megszakítások A valós idejű óra megszakítása Billentyűzet megszakítása Az LPT2-es port
megszakítása Az LPT1-es port megszakítása 0D 0E 0F 10 11 12 13 A merevlemezes meghajtó megszakítása A hajlékonylemezes meghajtó megszakítása A nyomtató megszakítása BIOS Kommunikációs Megszakítások A képernyőmeghajtó hívása AH Funkció 00 Képernyő-üzemmód váltása 01 A kurzor beállítása 02 A kurzor pozícionálása 03 A kurzor lekérdezése 04 A fényceruza pozíciójának beolvasása 05 Az aktív képernyőlap kiválasztása 06 Az aktív képernyőlap felfelé mozgatása 07 Az aktív képernyőlap lefelé mozgatása 08 Karakter és attribútum kiolvasása 09 Karakter és attribútum kiírása 0A Karakter kiírása 0B A színpaletta vagy háttérszín beállítása 0C Raszterpont kiírása 0D Raszterpont visszaolvasása 0E Karakterkiírás úgynevezett teletype üzemmódban 0F Pillanatnyi képernyő-üzemmód lekérdezése 10 EGA, MCGA és VGA képernyőkártyák palettaregisztereinek lekérdezése 11 EGA, MCGA és VGA képernyőkártyák
karaktergenerátorának felprogramozása 12 EGA, MCGA és VGA képernyőkártyák konfigurációs funkciói 13 Szöveglánc kiírása 1A Megjelenítő-kombinációk kezelése 1B MCGA és VGA képernyőkártyák BIOS képességeinek és állapotainak lekérdezése 1C VGA képernyőkártya állapotának lekérdezése és visszaállítása Konfigurációs Megszakítások A számítógép elemeinek lekérdezése Memóriamegszakítás Funkció A memória mérete Hajlékonylemezes Meghajtó Megszakításai A hajlékonylemezes maghajtó meghívása AH Funkció 00 A meghajtó ellenőrzése 01 Az utolsó meghajtóművelet eredményeinek lekérdezése 02 Szektor beolvasása 03 Szektor kiírása 04 Szektor ellenőrzése 05 Egy sáv formázása 06 Sávok formázása a rossz szektorok kijelölésével 07 Formázás az adott sávtól kezdve 08 Lemezparaméterek lekérdezése 09 A fixlemezes meghajtó leíró táblájának előkészítése 0A Hosszú beolvasás 0B Hosszú kiírás 0C Sávkeresés 0D
A fixlemezes meghajtórendszer előkészítése 10 A fixlemezes meghajtó működőképességének ellenőrzése 11 A fixlemezes meghajtó fejének előkészítése 12 A fixlemezes meghajtó illesztőmemóriájának tesztelése 13 14 15 16 17 18 14 AH 00 01 02 03 15 AH 00 01 03 04 80 81 82 83 84 85 86 87 88 89 90 91 C0 16 AH 00 01 02 17 AH 00 01 02 18 19 1A A fixlemezes meghajtó diagnosztikai funkciója A fixlemezes meghajtóhoz tartozó illesztőmemória tesztjének végrehajtása A meghajtó típusának beolvasása Lemezcsere lekérdezése A meghajtó típusának beállítása formázáshoz A lemez típusának beállítása formázáshoz Nyomtatóport Megszakítások Az aszinkron vonal meghívása Funkció A vonal előkészítése Karakter küldése Karakter fogadása A vonal állapotának lekérdezése Kiterjesztett AT Megszakítások Egyéb AT szolgáltatások Funkció A szalagos tárolóegység motorjának bekapcsolása A szalagos tárolóegység motorjának kikapcsolása
Adatblokk beolvasása Adatblokk kiírása Perifériális eszközök megnyitása Perifériális eszközök lezárása Eszköz használatának befejezése Eseményre várakozás A joystick kezelése A SYSRQ billentyű állapotának lekérdezése Egyéb várakozás Memóriablokk mozgatása Memóriakiterjesztés lekérdezése Átváltás virtuális módba Várakozás valamelyik eszközre Megszakítás kiszolgálásának jelzése Konfigurációs paramétertáblázat lekérdezése Byte Sorszám Funkció 0 Táblahossz 2 Rendszermodell sorszáma 3 Rendszermodell alsorszáma 5 Kiépítettségi információk Billentyűzet Megszakítások Billentyűzet meghajtóprogramjának meghívása Funkció Karakter beolvasása Billentyűzet memóriájának lekérdezése A Shift billentyű állapotának lekérdezése Nyomtató Megszakítások Nyomtató meghajtóprogramjának meghívása Funkció Karakter küldése A nyomtatóvezérlő előkészítése A nyomtatóvezérlő állapotának lekérdezése ROM
BASIC Megszakítások ROM BASIC beléptetési pont Rendszerindítási Megszakítások A rendszer melegindítása Rendszeróra Megszakítások A belső óra lekérdezése AH 00 01 02 03 04 05 06 07 1B 1C 1D 1E 1F • Funkció Az időszámláló lekérdezése Az időszámláló beállítása Az idő lekérdezése Az idő megadása A dátum lekérdezése A dátum beállítása Jeladás kérése adott időpontra Riasztás kikapcsolása Egyéb Megszakítások A Ctrl + Break billentyűkombináció felhasználói rutinja Az időzítő felhasználói rutinja Képernyő paramétertábla Meghajtó paramétertábla Grafikus karaktergenerátor táblázat címe Szoftveres úton. Ekkor egy program (elsősorban az operációs rendszer) kezdeményezi a magszakítást, azaz egy már futó program felfüggesztését. A megszakítások kiszolgálása mindig abban a sorrendben történik, ahogyan beérkeztek. Kivételt képez az az eset, amikor egy időben több megszakítási kérelem is érkezik.
Ilyenkor a processzor feladata, hogy eldöntse melyik megszakítási kérelem áll magasabb prioritási szinten, azaz amelyik végrehajtása a fontosabb. A Megszakítás Kiszolgálásának Lépései 1. 2. 3. lépés: hardver általi beállítások. Részei: • Az eszközvezérlő beállítja a megszakítási vonalat, jelezve ezzel a kérelmét. • A processzor visszaigazolja a kérelem elfogadását (amíg ez nem jön létre, az eszközvezérlő folyamatosan próbálkozik). • Az eszközvezérlő a megszakítási vonalra helyezi a megszakítási vektort. • A processzor eltárolja ezen vektorértéket. • A processzor elmenti az utasításszámláló- és az állapotregiszterek tartalmát a veremtárolóba (ekkor történik meg hardver szinten azon állapot eltárolása, ahonnan a megszakítás végén folytatni kell a megszakított rutint). • A processzor kikeresi a kiszolgáló rutin kezdőcímét és azt betölti az utasításszámláló regiszterbe (ezzel hardver szinten
kezdetét veszi a megszakítás). lépés: szoftver általi beállítások. Részei: • Az operációs rendszer a feldolgozás részeredményeit elmenti a regiszterekből a vermekbe (ezzel biztosítja, hogy azok ne íródjanak felül új értékekkel). • Az operációs rendszer megvizsgálja, hogy a kiszolgáló rutin tartozhat-e több eszközhöz. • Az operációs rendszer összegyűjti az egyéb, megszakításhoz történő paramétereket. • Az operációs rendszer kezeli a megszakítást okozó eseményt, azaz végrehajtódik a megszakítás. Annak végén az operációs rendszer egy jelzést kap. • Az operációs rendszer a felfüggesztett feldolgozás adatait visszatölti a megfelelő regiszterekbe. • Az operációs rendszer befejezi a kiszolgáló rutint, és visszatér a feldolgozó programhoz. lépés: hardver általi beállítások. Részei: • A processzor visszatölti az elmentett utasításszámláló- és állapotregiszterek tartalmát a veremtárolóból
(ekkor tekinthető mind hardver-, mind szoftver szinten teljes értékűnek a megszakítás). Az előbb bemutatott megszakítási eljárás egyszintű, azaz a megszakított folyamat nem szakítható meg egy újabb folyamat által. Többszintű eljárás esetében azonban a megszakított folyamat tovább szakítható, és így egymásba ágyazva akár több tucat megszakítás is létrejöhet egy időben. Az eljárás nagyon praktikus, ám igen veszélyes, ugyanis elégtelen kezeléskor az összes megszakított program futása végleg leállhat, és adatvesztés következhet be