Avbryt vs Fälla
I vilken som helst dator, under det normala utförandet av ett program, kan det finnas 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 förhållanden 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: n. Hårdvaruproblem kommer vanligen från många olika källor, såsom timerchip, kringutrustning (tangentbord, mus etc.), I / O-portar (seriell, parallell, etc.), hårddiskar, CMOS-klocka, expansionskort (ljudkort, video kort, etc.). Det innebär 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 stoppa vad den 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, avaktiveras andra hårdvaruproblem (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årdvaruprocesser 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 int instruktion 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 Avbryt 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.