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

Anonim

Megszakítás és kivétel

Minden számítógépen a program rendes végrehajtása során előfordulhatnak olyan események, amelyek a CPU ideiglenes leállítását okozhatják. 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 nevezik. 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 általában hardveres megszakításokra van fenntartva. Ezek a programok a külső hardveresemények által okozott programellenőrzési megszakítások. Itt külső eszközök a CPU-n kívül. 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, bővítőkártyák ká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, amit valaha csinált (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 gépen). Ha az ISR futása közben más hardveres megszakításokra van szükség, ezt meg kell tennie explicit módon 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 a kivétel?

Kivétel egy szoftveres megszakítás, amely speciális kezelői rutinként azonosítható. Az eltérés automatikusan előforduló csapdaként azonosítható (a Trap a vezérlő átvitelének minősíthető, amelyet a programozó kezdeményez). Általában nincsenek kivételekkel kapcsolatos speciális utasítások (csapdákat generálnak egy adott utasítás használatával). Tehát egy kivétel a "kivételes" állapot miatt következik be, amely a program végrehajtása során következik be. Például a nullára osztás, az illegális opcode vagy a memóriával kapcsolatos hibák végrehajtása kivételeket okozhat. Amikor kivétel merül fel, a CPU ideiglenesen felfüggeszti a végrehajtandó programot, és elindítja az ISR-et. Az ISR tartalmazni fogja, hogy mi a teendő a kivétellel. Javíthatja a problémát, vagy ha ez nem lehetséges, akkor a hibás üzenet nyomtatásával megszakíthatja a programot.Bár egy adott utasítás nem okoz kivételt, kivételt mindig egy utasítás okoz. Például a nullás hibaosztás csak a megosztási utasítás végrehajtása során jelentkezhet.

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

A megszakítások hardveres megszakítások, a kivételek pedig szoftveres 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 kivételekre. Ha a hardveres megszakításokat mindaddig meg kell tiltani, amíg kivétel nem érkezik, 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 a hardveres megszakításokat érinti a kivételekkel szemben. Ez azt jelenti, hogy a zászló törlése nem fogja megakadályozni a kivételeket.