Interrupt vs Trap
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 dessa kallas avbrott. Avbrott kan orsakas av antingen mjukvaru- eller hårdvarufel. Hårdvaruavbrott kallas (helt enkelt) avbrott, medan programvaruavbrott kallas för undantag eller fällor. Ett undantag är ett automatiskt genererat mjukvaruavbrott, medan en fälla är ett mjukvaruanropat avbrott som initieras av programmeraren. 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 de tillstånd som uppstår av avbrottet.
Vad är ett 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 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 processorn startar ISR, inaktiveras andra hårdvaruavbrott (t.g. 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 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 ett automatiskt uppkommande programavbrott). Men vissa kanske hävdar att en fälla helt enkelt är ett speciellt subrutinsamtal. Så de faller in i kategorin mjukvaruanropade avbrott. 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 subrutinen som är associerad med fällan. Den exakta instruktionen som anropar rutinen för att hantera fällan är lätt att identifiera eftersom en explicit instruktion används för att specificera en fälla.
Vad är skillnaden mellan Interrupt och Trap?
Avbrott är maskinvaruavbrott, medan traps är avbrott som anropas av programvara. Förekomster av hårdvaruavbrott inaktiverar vanligtvis andra hårdvaruavbrott, men detta gäller inte för fällor. Om du behöver inte tillåta hårdvaruavbrott tills en fälla serveras, måste du uttryckligen rensa avbrottsflaggan. Och vanligtvis påverkar avbrottsflaggan på datorn (hårdvara) avbrott i motsats till fällor. Detta innebär att rensa denna flagga inte kommer att förhindra fällor. Till skillnad från traps bör avbrott bevara processorns tidigare tillstånd.