Skillnad mellan avbrott och undantag

Anonim

Avbryt mot undantag

På alla datorer kan det förekomma händelser som kan orsaka att CPU-enheten tillfälligt stannar. Händelser som detta kallas avbrott. Avbrott kan orsakas av programvaru- eller maskinvarufel. Hårdvaruproblem kallas (helt enkelt) Avbrott, medan programavbrott kallas Undantag. När en avbrott (mjukvara eller hårdvara) har höjts överförs kontrollen till en särskild subrutin som heter ISR (Interrupt Service Routine) som kan hantera de villkor som uppstår vid avbrottet.

Vad är Avbryt?

Termen Avbryt är vanligtvis reserverad för hårdvaruproblem. De är programkontrollavbrott som orsakas av externa hårdvaruhändelser. Här betyder externt externt för CPU: n. Hårdvaruproblem kommer vanligen från många olika källor, såsom timerchip, kringutrustning (tangentbord, mus etc.), I / O-portar (seriell, parallell, etc.), hårddiskar, CMOS-klocka, expansionskort (ljudkort, video kort, etc.). Det betyder att hårdvaruavbrott nästan aldrig uppstår på grund av en händelse som är relaterad till exekveringsprogrammet. Exempelvis kan en händelse som en tangent trycka på tangentbordet av användaren, eller en intern hårdvarutimerstimer kan öka denna typ av avbrott och kan informera CPU: n att en viss enhet behöver viss uppmärksamhet. I en sådan situation kommer CPU-enheten att sluta vad som helst (det vill säga pausar det aktuella programmet), ger den service som krävs av enheten och kommer tillbaka till det normala programmet. När hårdvaruproblem uppstår och CPU startar ISR, är andra hårdvaruavbrott inaktiverade (t ex i 80 × 86-maskiner). Om du behöver andra maskinvaruavbrott när ISR körs måste du göra det explicit genom att rensa avbrottsflaggan (med steginstruktion). I 80 × 86-maskiner kommer det endast att påverka hårdvaruproblemen att rensa avbrottsflaggan.

Vad är undantag?

Undantag är ett programavbrott, vilket kan identifieras som en speciell hanteringsrutin. Undantag kan identifieras som en automatiskt förekommande fälla (ett fält kan identifieras som en överföring av kontroll som initieras av programmeraren). Generellt finns inga specifika instruktioner förknippade med undantag (fällor genereras med hjälp av en specifik instruktion). Så ett undantag uppstår på grund av ett "exceptionellt" tillstånd som uppstår vid programkörning. Exempelvis kan uppdelning av noll, utförande av ett olagligt opcode eller minne relaterat fel orsaka undantag. När ett undantag uppstår upphäver CPU tillfälligt det program som det utförde och startar ISR. ISR kommer att innehålla vad man ska göra med undantaget. Det kan rätta till problemet eller om det inte är möjligt kan det avbryta programmet graciöst genom att skriva ut ett lämpligt felmeddelande.Även om en specifik instruktion inte medför ett undantag, kommer ett undantag alltid att orsakas av en instruktion. Exempelvis kan delningen med nollfel endast ske under utförandet av delningsinstruktionen.

Vad är skillnaden mellan avbrott och undantag?

Avbrott är maskinavbrott, medan undantag är programavbrott. Förekomsten av hårdvaruavbrott avaktiverar vanligtvis andra maskinvaruavbrott, men detta gäller inte för undantag. Om du behöver avbryta hårdvaruavbrott tills ett undantag visas, måste du explicit avmarkera avbrytningsflaggan. Och vanligtvis påverkar avbrottsflaggan på datorn (maskinvara) avbrott i motsats till undantag. Det innebär att rensa denna flagga inte hindrar undantag.