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: Ошибки в сантехнике. Вводной узел в квартиру. 2024, April
Anonim

Avbryt mot undantag

I vilken dator som helst, under det normala körandet av ett program, kan det finnas händelser som kan få CPU att stoppa tillfälligt. Händelser som detta kallas avbrott. Avbrott kan orsakas av program- eller maskinvarufel. Maskinvaruavbrott kallas (helt enkelt) avbrott, medan programavbrott kallas undantag. När ett avbrott (mjukvara eller hårdvara) har höjts överförs kontrollen till en speciell underrutin som kallas ISR (Interrupt Service Routine) som kan hantera de förhållanden som höjs av avbrottet.

Vad är Interrupt?

Termen Interrupt är vanligtvis reserverad för hårdvaruavbrott. De är programstyrningsavbrott orsakade av externa hårdvaruhändelser. Här betyder externt externt för CPU. Hårdvaruavbrott kommer vanligtvis från många olika källor, t.ex. timerchip, kringutrustning (tangentbord, mus, etc.), I / O-portar (seriell, parallell, etc.), hårddiskar, CMOS-klocka, expansionskort (ljudkort, video) kort, etc). Det betyder att maskinvarustörningar nästan aldrig inträffar på grund av någon händelse relaterad till körprogrammet. Till exempel kan en händelse som en tangenttryckning på tangentbordet av användaren, eller en intern tidtagning av hårdvarutimern, höja denna typ av avbrott och kan informera CPU: n att en viss enhet behöver lite uppmärksamhet. I en sådan situation kommer processorn att stoppa vad den gjorde (dvs pausar det aktuella programmet),tillhandahåller den service som krävs av enheten och kommer tillbaka till det normala programmet. När hårdvaruavbrott inträffar och CPU: n startar ISR, avaktiveras andra hårdvaruavbrott (t.ex. i 80 × 86-maskiner). Om du behöver att andra maskinvarustörningar inträffar medan ISR körs måste du göra det uttryckligen genom att rensa avbrottsflaggan (med sti-instruktion). I 80 × 86-maskiner kommer rensning av avbrottsflaggan endast att påverka hårdvaruavbrott.rensning av avbrottsflaggan påverkar bara hårdvaruavbrott.rensning av avbrottsflaggan påverkar bara hårdvaruavbrott.

Vad är undantag?

Undantag är ett programavbrott 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). Generellt finns det inga specifika instruktioner associerade med undantag (fällor genereras med en specifik instruktion). Så ett undantag uppstår på grund av ett "exceptionellt" tillstånd som uppstår under programkörningen. Till exempel kan delning med noll, körning av en olaglig opkod eller minnesrelaterat fel orsaka undantag. Närhelst ett undantag tas upp stänger CPU tillfälligt av programmet som den kö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 elegant 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 delningen med nollfel endast inträffa under körningen av delningsinstruktionen.

Vad är skillnaden mellan avbrott och undantag?

Interrupt är hårdvaruavbrott, medan undantag är programavbrott. Förekomst av hårdvaruavbrott inaktiverar vanligtvis andra hårdvaruavbrott, men detta gäller inte för undantag. Om du behöver avvisa maskinvarustörningar tills ett undantag visas, måste du tydligt rensa avbrottsflaggan. Och vanligtvis avbryter avbrottsflaggan på datorn (hårdvara) avbrott i motsats till undantag. Detta innebär att rensning av denna flagga inte kommer att förhindra undantag.

Rekommenderas: