Interrupt vs Trap
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 dessa kallas avbrott. Avbrott kan orsakas av program- eller maskinvarufel. Maskinvaruavbrott kallas (helt enkelt) avbrott, medan programavbrott kallas undantag eller fällor. Ett undantag är ett automatiskt genererat programavbrott, medan en fälla är ett programavbruten avbrott initierat av programmeraren. 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 ett avbrott?
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 CPU att stoppa vad den än 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 en fälla?
En fälla kan identifieras som en överföring av kontroll, som initieras av programmeraren. Termen Trap används omväxlande med termen Exception (som är en automatiskt förekommande programavbrott). Men vissa kan hävda att en fälla helt enkelt är ett speciellt subrutinanrop. Så de faller in i kategorin programvaruavbrott. Till exempel, i 80 × 86-maskiner kan en programmerare använda int-instruktionen för att initiera en fälla. Eftersom en fälla alltid är ovillkorlig kommer kontrollen alltid att överföras till den underrutin som är associerad med fällan. Den exakta instruktionen, som åberopar rutinen för hantering av fällan, identifieras lätt eftersom en uttrycklig instruktion används för att specificera en fälla.
Vad är skillnaden mellan Interrupt och Trap?
Avbrott är maskinvaruavbrott, medan fällor är av programvaran åberopade avbrott. Förekomst av hårdvaruavbrott inaktiverar vanligtvis andra hårdvaruavbrott, men detta gäller inte för fällor. Om du behöver avvisa maskinvaruavbrott tills en fälla serveras måste du tydligt rensa avbrottsflaggan. Och vanligtvis påverkar avbrottsflaggan på datorn (hårdvara) avbrott i motsats till fällor. Detta innebär att rensning av denna flagga inte kommer att förhindra fällor. Till skillnad från fällor bör avbrott bevara CPU: s tidigare tillstånd.