Megszakítás vs csapda
Bármely számítógépen a program normál futtatá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 szoftveres vagy hardveres hibá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. A kivétel egy automatikusan generált szoftvermegszakítás, míg a csapda egy szoftver által meghívott megszakítás, amelyet a programozó kezdeményezett. Amint egy megszakítás (szoftver vagy hardver) felvetődik, a vezérlés átkerül egy speciális szubrutinra, az úgynevezett ISR-re (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és általában hardveres megszakításokra van fenntartva. Ezek külső hardveresemények által okozott programszabályozási megszakítások. Itt a külső azt jelenti, hogy a CPU-n kívül van. A hardveres megszakítások általában sokféle forrásból származnak, 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, video) kártya stb.). Ez azt jelenti, hogy a végrehajtó programhoz kapcsolódó valamilyen esemény miatt a hardveres megszakítás szinte soha nem történik meg. Például egy olyan esemény, mint a billentyűzet billentyű általi megnyomása a felhasználó által, vagy egy belső hardveres időzítő időzítése emelheti ezt a fajta megszakítást, és tájékoztathatja a CPU-t arról, hogy egy bizonyos eszköz némi figyelmet igényel. Ilyen helyzetben a CPU leállítja bármit is (azaz szünetelteti az aktuális programot),biztosítja a készülék által igényelt szolgáltatást, és visszatér a normál programhoz. Ha a hardver megszakad, és a CPU elindítja az ISR-t, akkor a többi hardveres megszakítás le van tiltva (pl. 80 × 86-os gépeknél). Ha más hardveres megszakításokra van szüksége az ISR futása közben, akkor ezt kifejezetten 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ásokat érinti.a megszakítási jelző törlése csak a hardveres megszakításokat érinti.a megszakítási jelző törlése csak a hardveres megszakításokat érinti.
Mi az a csapda?
A csapda azonosítható a vezérlés átadásaként, amelyet a programozó kezdeményez. A Trap kifejezést felcserélhetően használják az Exception kifejezéssel (ami automatikusan bekövetkező szoftvermegszakítás). De egyesek azzal érvelhetnek, hogy a csapda egyszerűen egy speciális szubrutin hívás. Tehát a szoftver által hívott megszakítások kategóriájába tartoznak. Például 80 × 86 gépekben a programozó az int utasítást használhatja egy csapda kezdeményezésére. Mivel a csapda mindig feltétel nélküli, a vezérlés mindig átkerül a csapdához kapcsolódó alprogramba. A pontos utasítás, amely a csapda kezelésének rutinját hívja meg, könnyen azonosítható, mert a csapda megadásához kifejezett utasítást használnak.
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 szoftveres megszakítások. A hardveres megszakítások általában letiltják a többi hardveres megszakítást, de ez nem igaz a csapdákra. Ha meg kell tiltania a hardveres megszakításokat, amíg egy csapda ki nem kerül, akkor egyértelműen törölnie kell a megszakítás jelzőt. És általában a megszakítás jelzője a számítógépen befolyásolja a (hardver) megszakításokat, a csapdákkal szemben. Ez azt jelenti, hogy a zászló törlése nem fogja megakadályozni a csapdákat. A csapdákkal ellentétben a megszakításoknak meg kell őrizniük a CPU korábbi állapotát.