Skillnad mellan avbrott och fälla

Anonim

Interrupt vs Trap

På alla datorer kan det förekomma händelser som kan orsaka att CPU-enheten tillfälligt stannar. Händelser som dessa kallas avbrott. Avbrott kan orsakas av programvaru- eller maskinvarufel. Hårdvaruproblem kallas (helt enkelt) Avbrott, medan programavbrott kallas undantag eller fällor. En Undantag är ett automatiskt genererat programavbrott, medan en Trap är ett programvaruanspråkat avbrott initierat av programmeraren. 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 ett avbrott?

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 . Hårdvaruproblem kommer vanligtvis från många olika källor, såsom timerchip, kringutrustning (tangentbord, mus etc.), I / O-portar (seriell, parallell osv.), Hårddiskar, CMOS-klocka, expansionskort kort, grafikkort, 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 sti instruktion). I 80 × 86-maskiner kommer det endast att påverka hårdvaruproblemen att rensa avbrottsflaggan.

Vad är en Trap?

Ett fäll kan identifieras som en överföring av kontroll som initieras av programmeraren. Termen Trap används utbytbart med termen Undantag (vilket är ett automatiskt uppträdande programavbrott). Men vissa kan hävda att en fälla bara är ett speciellt subrutinanrop. Så de faller in i kategorin programvaruansökta avbrott. Till exempel, i 80 × 86-maskiner kan en programmerare använda instruktionen int för att initiera en fälla. Eftersom en fälla alltid är ovillkorlig kommer kontrollen alltid att överföras till den delrutin som är förknippad med fällan. Den exakta instruktionen, som åberopar rutinen för hantering av fällan, identifieras lätt eftersom en explicit instruktion används för att specificera en fälla.

Vad är skillnaden mellan avbrott och fälla?

Avbrott är avbrott i hårdvaran, medan fällor är programvaruberoende avbrott. Förekomsten av maskinvaruavbrott avaktiverar vanligtvis andra hårdvaruavbrott, men detta gäller inte fällor. Om du behöver avbryta hårdvaruavbrott tills en fälla serveras måste du explicit avmarkera avbrytningsflaggan. Och vanligtvis påverkar avbrottsflaggan på datorn (maskinvara) avbrott i motsats till fällor. Det innebär att rensning av denna flagga inte hindrar fällor. Till skillnad från fällor bör avbrott bevara CPU: s tidigare tillstånd.