Avbryt mot undantag
I vilken som helst dator, under det normala utförandet av ett program, kan det finnas 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 förhållanden 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 innebär 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 stoppa vad det än gjorde (dvs pausar det aktuella programmet), ger den tjänst som krävs av enheten och kommer tillbaka till det normala programmet. När hårdvaruavbrott inträffar och CPU startar ISR, avaktiveras andra hårdvaruproblem (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årdvaruprocesser att rensa avbrottsflaggan.
Vad är undantag?
Undantag är en mjukvaruavbrott, som kan identifieras som en särskild handlarrutin. 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 Avbryt och Undantag?
Avbrott är avbrott i maskinvaran, 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.