Különbség a megszakítás és a csapda között

Anonim

Megszakítás vagy csapás

Bármelyik számítógépen a program rendes végrehajtása során előfordulhatnak események, amelyek a CPU ideiglenes megállításához vezethetnek. Az ilyen eseményeket nevezik megszakításoknak. A megszakításokat szoftveres vagy hardveres hibák okozhatják. A hardveres megszakításokat egyszerűen megszakítják, míg a szoftveres megszakításokat kivételeknek vagy csapdáknak nevezik. Az Exception egy automatikusan generált szoftveres megszakítás, míg a Trap egy szoftver által meghívott megszakítás, amelyet a programozó kezdeményezett. A megszakítás (szoftver vagy hardver) felemelése után a vezérlés átkerül egy speciális, az interrupt szolgáltatás rutin (ISR) nevű szubrutinába, amely képes kezelni a megszakítás által felvetett feltételeket.

Mi az interrupt?

A Megszakítás kifejezés rendszerint hardveres megszakításokra van fenntartva . Ezek a programok a külső hardveresemények által okozott programellenőrző megszakítások. Itt a külső CPU-n kívüli eszközök . A hardveres megszakítások általában többféle forrásból származnak: időzítő chip, perifériák (billentyűzetek, egér stb.), I / O portok (soros, párhuzamos stb.), Lemezmeghajtók, CMOS óra, kártya, videokártya stb.). Ez azt jelenti, hogy a hardveres megszakítások szinte soha nem fordulnak elő a végrehajtó programhoz kapcsolódó események miatt. Például olyan esemény, mint például a billentyűzet billentyűzet általi megnyomása a felhasználó által, vagy a belső hardveres időzítés időzítése, felkeltheti ezt a megszakítást, és tájékoztathatja a CPU-t, hogy egy bizonyos eszköz valamilyen figyelmet igényel. Ilyen helyzetben a CPU leállítja bármit is (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. Amikor hardveres megszakítások következnek be, és a CPU elindítja az ISR-t, más hardveres megszakítások le vannak tiltva (például 80 × 86-es gépeken). Ha az ISR futása közben más hardveres megszakításokra van szükség, ezt meg kell tennie a megszakítási jelző törlésével (sti utasítással). 80 × 86-os gépeknél a megszakítási jelző törlése csak a hardveres megszakításokra vonatkozik.

Mi az a csapda?

A csapda a vezérlés átvitele lehet, amelyet a programozó kezdeményez. A Trap kifejezést felcserélhető módon használják az Exception (azaz automatikusan fellépő szoftveres megszakítás) kifejezéssel. De egyesek azzal érvelhetnek, hogy a csapda egyszerűen egy speciális szubrutinhívás. Így a szoftver-meghívásos megszakítások kategóriájába esnek. Például 80 × 86 gépen a programozó a int utasítást használhatja egy csapda kezdeményezésére. Mivel a csapda mindig feltétel nélküli, a vezérlő mindig átkerül a csapdához társított szubrutinba. A pontos utasítás, amely a csapdát kezelő rutinra hivatkozik, könnyen azonosítani, mert egy explicit utasítást használnak a csapda meghatározására.

Mi a különbség a megszakítás és a csapda között?

A megszakítások hardveres megszakítások, míg a csapdák szoftver-meghívásos 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 meg kell tiltania a hardveres megszakításokat addig, amíg csapdát nem szolgáltat, 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 befolyásolja a (hardveres) megszakításokat a csapdákkal szemben. Ez azt jelenti, hogy a lobogó 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.