Interrupt vs Trap
Bármely számítógépen egy program normál végrehajtása során előfordulhatnak olyan események, amelyek a CPU ideiglenes leállását okozhatják. Az ilyen eseményeket megszakításoknak nevezzük. A megszakításokat szoftver- vagy hardverhibák okozhatják. A hardveres megszakításokat (egyszerűen) megszakításoknak, míg a szoftveres megszakításokat kivételeknek vagy csapdáknak nevezzük. Az Exception egy automatikusan generált szoftvermegszakítás, míg a Trap egy szoftver által előhívott megszakítás, amelyet a programozó kezdeményez. Ha egy megszakítást (szoftvert vagy hardvert) emelnek, a vezérlés átkerül az ISR (Interrupt Service Routine) nevű speciális szubrutinba, 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 tartják fenn. Ezek külső hardveresemények által okozott programvezérlési megszakítások. Itt a külső a CPU-n kívüli kifejezést jelenti. A hardveres megszakítások általában sok különböző forrásból származnak, mint például időzítő chip, perifériás eszközök (billentyűzetek, egér stb.), I/O portok (soros, párhuzamos stb.), lemezmeghajtók, CMOS óra, bővítőkártyák (hangkártya, videó). kártya stb.). Ez azt jelenti, hogy hardveres megszakítások szinte soha nem fordulnak elő a végrehajtó programmal kapcsolatos események miatt. Például egy olyan esemény, mint a felhasználó billentyűzetének billentyűlenyomása, vagy egy belső hardveres időzítés, előidézheti ezt a fajta megszakítást, és tájékoztathatja a CPU-t, hogy egy bizonyos eszköz figyelmet igényel. Ilyen helyzetben a CPU leállítja, amit csinált (azaz szünetelteti az aktuális programot), biztosítja az eszköz által igényelt szolgáltatást, és visszatér a normál programhoz. Amikor hardveres megszakítások lépnek fel, és a CPU elindítja az ISR-t, a többi hardveres megszakítás le van tiltva (pl.g. 80×86-os gépekben). Ha más hardveres megszakításokra van szüksége, miközben az ISR fut, akkor ezt kifejezetten meg kell tennie a megszakítási jelző törlésével (sti utasítással). 80×86-os gépeken a megszakításjelző törlése csak a hardveres megszakításokra lesz hatással.
Mi az a csapda?
A Trap az irányítás átadásaként azonosítható, amelyet a programozó kezdeményez. A Trap kifejezést felcserélhetően használják az Exception kifejezéssel (amely egy automatikusan előforduló szoftvermegszakítás). De egyesek azzal érvelhetnek, hogy a csapda egyszerűen egy speciális szubrutinhívás. Tehát a szoftver által kiváltott megszakítások kategóriájába tartoznak. Például a 80×86-os gépeken a programozó az int utasítást használhatja csapda kezdeményezésére. Mivel a csapda mindig feltétel nélküli, a vezérlés mindig átkerül a csapdához társított szubrutinra. A pontos utasítás, amely meghívja a trap kezelési rutinját, könnyen azonosítható, mivel egy explicit utasítást használnak a trap meghatározására.
Mi a különbség az Interrupt és a Trap között?
A megszakítások hardveres megszakítások, míg a csapdák szoftver által előidézett megszakítások. A hardveres megszakítások előfordulása általában letiltja a többi hardveres megszakítást, de ez nem igaz a csapdákra. Ha le kell tiltania a hardveres megszakításokat a csapda kiszolgálásáig, akkor kifejezetten törölnie kell a megszakítási jelzőt. És általában a számítógépen lévő megszakítási jelző hatással van a (hardveres) megszakításokra, nem pedig a csapdákra. Ez azt jelenti, hogy a zászló 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.