Skillnaden mellan avbrott och undantag

Skillnaden mellan avbrott och undantag
Skillnaden mellan avbrott och undantag

Video: Skillnaden mellan avbrott och undantag

Video: Skillnaden mellan avbrott och undantag
Video: IP address : Public and Private IP address explained | CCNA 200-301 2024, November
Anonim

Avbrott vs undantag

I vilken dator som helst, under dess normala körning av ett program, kan det inträffa händelser som kan få CPU:n att tillfälligt stanna. Händelser som detta kallas avbrott. Avbrott kan orsakas av antingen mjukvaru- eller hårdvarufel. Hårdvaruavbrott kallas (helt enkelt) avbrott, medan programvaruavbrott kallas undantag. När ett avbrott (mjukvara eller hårdvara) har höjts överförs kontrollen till en speciell subrutin som kallas ISR (Interrupt Service Routine) som kan hantera tillstånden som uppstår av avbrottet.

Vad är avbrott?

Termen Avbrott är vanligtvis reserverat för hårdvaruavbrott. De är programkontrollavbrott orsakade av externa hårdvaruhändelser. Här betyder extern extern till CPU. Hårdvaruavbrott kommer vanligtvis från många olika källor såsom timerchip, kringutrustning (tangentbord, mus, etc.), I/O-portar (seriella, parallella, etc.), diskenheter, CMOS-klocka, expansionskort (ljudkort, video). kort etc). Det betyder att hårdvaruavbrott nästan aldrig inträffar på grund av någon händelse relaterad till det körande programmet. Till exempel kan en händelse som en tangenttryckning på tangentbordet av användaren, eller en intern hårdvarutimers timeout höja denna typ av avbrott och kan informera CPU:n att en viss enhet behöver lite uppmärksamhet. I en situation som den kommer CPU:n att stoppa vad den någonsin gjorde (dvs. pausar det aktuella programmet), tillhandahåller 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, inaktiveras andra hårdvaruavbrott (t.ex. i 80×86-maskiner). Om du behöver andra hårdvaruavbrott att inträffa medan ISR körs, måste du göra det uttryckligen genom att rensa avbrottsflaggan (med sti-instruktion). I 80×86-maskiner kommer att rensa avbrottsflaggan endast påverka maskinvaruavbrott.

Vad är undantag?

Undantag är ett mjukvaruavbrott, som kan identifieras som en speciell hanterarrutin. Undantag kan identifieras som en automatiskt förekommande fälla (en fälla kan identifieras som en överföring av kontroll, som initieras av programmeraren). I allmänhet finns det 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 inträffar under programkörning. Till exempel kan division med noll, exekvering av en olaglig opkod eller minnesrelaterat fel orsaka undantag. Närhelst ett undantag görs avbryter CPU:n tillfälligt programmet den körde och startar ISR. ISR kommer att innehålla vad som ska göras med undantaget. Det kan åtgärda problemet eller om det inte är möjligt kan det avbryta programmet på ett elegant sätt genom att skriva ut ett lämpligt felmeddelande. Även om en specifik instruktion inte orsakar ett undantag, kommer ett undantag alltid att orsakas av en instruktion. Till exempel kan divisionen med nollfel endast ske under körningen av divisionsinstruktionen.

Vad är skillnaden mellan avbrott och undantag?

Avbrott är maskinvaruavbrott, medan undantag är programvaruavbrott. Förekomster av hårdvaruavbrott inaktiverar vanligtvis andra hårdvaruavbrott, men detta gäller inte för undantag. Om du behöver inte tillåta hårdvaruavbrott tills ett undantag serveras, måste du uttryckligen rensa avbrottsflaggan. Och vanligtvis påverkar avbrottsflaggan på datorn (hårdvara) avbrott i motsats till undantag. Detta innebär att om du rensar den här flaggan förhindrar du undantag.

Rekommenderad: