Megszakítás vs kivétel
Bármelyik számítógépen a program szokásos végrehajtása során történhetnek olyan események, amelyek miatt a CPU átmenetileg leállhat. Az ilyen eseményeket megszakításoknak nevezzük. A megszakítást a szoftver vagy a hardver hibája okozhatja. A hardver megszakításokat (egyszerűen) megszakításoknak, a szoftver megszakításokat kivételeknek nevezzük. Ha egy megszakítás (szoftver vagy hardver) felmerült, a vezérlés egy speciális szubrutinba kerül át, az úgynevezett ISR (Interrupt Service Routine), amely képes kezelni a megszakítás által felvetett feltételeket..
Mi az a megszakítás??
A Megszakítás kifejezést általában a hardveres megszakításokra kell fenntartani. Ezek a külső hardver események által okozott programvezérlő megszakítások. Itt a CPU-n kívüli külső eszközök vannak. A hardvermegszakítások általában sokféle forrásból származnak, például időzítő chipből, perifériákból (billentyűzetek, egér stb.), I / O portokból (soros, párhuzamos stb.), Lemezmeghajtókból, CMOS órából, bővítőkártyákból (hangkártya, videó) kártya stb.). Ez azt jelenti, hogy a végrehajtó programhoz kapcsolódó események miatt szinte soha nem fordul elő hardver-megszakítás. Például egy esemény, például a felhasználó által a billentyűzeten lenyomott billentyű, vagy a belső hardveridőzítő időkorlátja növeli az ilyen típusú megszakítást, és tájékoztathatja a CPU-t arról, hogy egy adott eszköznek némi figyelmet igényel. Ilyen helyzetben a CPU leállítja azt, amit valaha csinált (azaz megállítja az aktuális programot), biztosítja az eszköz által megkövetelt szolgáltatást, és visszatér a normál programhoz. Ha hardver megszakad, és a CPU elindítja az ISR-t, akkor a többi hardver megszakítás le van tiltva (például 80 × 86 gépen). Ha más hardver-megszakításokra van szüksége az ISR futtatása közben, akkor ezt kifejezetten meg kell tennie a megszakítási jelző törlésével (sti utasításokkal). 80 × 86 gépeken a megszakítás jelző törlése csak a hardver megszakításokat érinti.
Mi a kivétel??
Kivétel egy szoftver megszakítás, amelyet különleges kezelő rutinként lehet azonosítani. A kivétel automatikusan előforduló csapdaként azonosítható (a csapda a vezérlés átadásaként azonosítható, amelyet a programozó indít). Általában nincs kivétellel kapcsolatos konkrét utasítás (a csapdákat egy adott utasítás felhasználásával generálják). Tehát kivétel történik egy „kivételes” körülmény miatt, amely a program végrehajtása során fordul elő. Például a nullával történő osztás, az illegális opód végrehajtása vagy a memóriával kapcsolatos hiba kivételeket okozhat. Ha kivétel történik, a CPU ideiglenesen felfüggeszti a végrehajtott programot, és elindítja az ISR-t. Az ISR tartalmazni fogja, mit kell tennie, kivéve ezt. Javíthatja a problémát, vagy ha ez nem lehetséges, akkor megfelelő hibaüzenet nyomtatásával kecsesen megszakíthatja a programot. Bár egy adott utasítás nem okoz kivételt, a kivételt mindig egy utasítás okozza. Például, a nulla osztásos hiba csak a felosztási utasítás végrehajtásakor fordulhat elő.
Mi a különbség a megszakítás és a kivétel között??
A megszakítások hardvermegszakítások, míg a kivételek a szoftvermegszakítások. A hardvermegszakítások előfordulása általában letiltja a többi hardvermegszakítást, de ez nem igaz a kivételekre. Ha el kell tiltania a hardver-megszakításokat, amíg egy kivétel meg nem jelenik, akkor egyértelműen törölnie kell a megszakítási jelzőt. És általában a számítógép megszakítási jelzője (kivéve) a (hardver) megszakításokat érinti. Ez azt jelenti, hogy a zászló törlése nem akadályozza meg a kivételeket.