Megszakítás vs Csapda
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 vagy csapdáknak nevezzük. Kivétel egy automatikusan létrehozott szoftvermegszakítás, míg a Trap a programozó által kezdeményezett szoftvermegszakítás. 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, amit tett (azaz megállítja az aktuális programot), biztosítja az eszköz által igényelt 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ás). 80 × 86 gépeken a megszakítás jelző törlése csak a hardver megszakításokat érinti.
Mi a csapda??
A csapda a vezérlés átadásaként azonosítható, amelyet a programozó indít. A Trap kifejezést felváltva alkalmazzák a Kivétel (amely automatikusan bekövetkező szoftvermegszakítás) kifejezéssel. Néhányan azt állíthatják, hogy a csapda egyszerűen egy speciális szubrutinhívás. Így belekerülnek a szoftver által meghívott megszakítások kategóriájába. Például, 80 × 86 gépen egy programozó használhatja a int utasítás a csapda elindításához. Mivel a csapda mindig feltétel nélküli, a vezérlés mindig átkerül a csapdához társított alprogramba. A pontos utasítás, amely a csapda kezelésének rutinját idézi elő, könnyen azonosítható, mivel egy csapda meghatározására explicit utasítás szolgál.
Mi a különbség az Interrupt és a Trap között??
A megszakítások hardver megszakítások, míg a csapdák szoftver által meghívott megszakítások. A hardvermegszakítások előfordulása általában letiltja a többi hardvermegszakítást, de ez nem igaz a csapdákra. Ha el kell tiltania a hardver-megszakításokat, amíg a csapdát kiszolgálják, akkor kifejezetten törölnie kell a megszakítás jelzőjét. És általában a számítógép megszakítási jelzője befolyásolja a (hardver) megszakításokat, szemben a csapdákkal. Ez azt jelenti, hogy ennek a zászlónak a törlése nem akadályozza meg a csapdákat. A csapdákkal ellentétben a megszakításoknak meg kell őrizniük a CPU korábbi állapotát.