Web Analytics

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Interrupt - Wikipedia

Interrupt

aus Wikipedia, der freien Enzyklopädie

In der Informatik versteht man unter Interrupt (lat. interruptus, Unterbrechung) die kurzfristige Unterbrechung eines Programms durch eine von der CPU abzuarbeitenden Befehlssequenz, die Interrupt Service Routine (=ISR, Unterbrechungsroutine). Anschließend wird die Ausführung des Programmes an der Unterbrechungsstelle fortgesetzt.

Sinn eines Interrupts ist es, schnell auf Ein-/Ausgabe-Signale (z. B. Tastatur, Maus, Festplatte, Netzwerk usw.) oder Zeitgebern (Timern) zu reagieren. Interrupts sind nötig, um auf zeitkritische Ereignisse reagieren zu können. Beispielsweise ist präemptives Multitasking ohne Interrupts nicht möglich, da Tasks sonst nicht mehr unterbrochen und umgeschaltet werden können.

Ausgelöst werden Interrupts durch Elektronikkomponenten (Interrupt Controller) mittels eines so genannten Interrupt Requests (=IRQ, "Unterbrechungs-Anfrage"), einer Signalisierung an die CPU. Wenn die Interrupts von der CPU angenommen werden (nicht maskiert; nach Ende einer laufenden Instruktion), wird in einer festen Sequenz (Interruptzyklus) die auslösende Quelle des Interrupts über den Datenbus identifiziert, dadurch der zugehörige Interruptvektor gefunden und der Sprung in die ISR ausgelöst. Stehen bis zu diesem Zeitpunkt mehrere IRQs von mehreren Quellen an, so wird in einem Auswahlverfahren durch die Hardware (Interrupt Controller) der Vektor des wichtigsten Interrupts bestimmt (meist durch Prioritätsverfahren; nicht nach Reihenfolge!) und angenommen.

Durch Hardware ausgelöste Interrupts (Hardwareinterrupts) sind normalerweise maskierbare Interrupts, deren Auslösung durch eine spezielle Instruktion unterbunden (maskiert) werden kann (bei gewissen zeitkritischen und synchronisierenden Routinen z. B. in Gerätetreibern). Die meisten CPU Hersteller implementieren für Sonderfälle (Stromausfall, Speicherfehler usw.) auch nicht-maskierbare Interrupts (=NMI), die immer einen Sprung des Prozessors in die Interruptroutine auslösen, wobei ohne besondere Maßnahmen diese NMIs auch durch sich selbst unterbrochen werden können. Das ist auch der Grund warum normale Hardwareinterrupts beim Einsprung in die ISR die Interrupts automatisch maskieren. Beim Rücksprung wird immer der alte Zustand (durch Rückspeicherung des Statusregisters) wiederhergestellt.

Hardwareinterrupts sind gegenüber dem unterbrochenen Programm grundsätzlich asynchron, d. h. sie treten zu einem unbestimmten Zeitpunkt auf. Daher dürfen Interrupts ohne besondere synchronisierende Maßnahmen keinen direkten Einfluss auf Programme (oder Programmvariablen) ausüben. ISRs sind keine Tasks im Sinne des Betriebssystems.

Einige Prozessoren kennen auch spezielle Befehle, um so genannte Software-"Interrupts" aus einer laufenden Task heraus auszulösen, die außer den besonderen Ein- und Rücksprungbedingungen wie Unterprogrammaufrufe wirken und daher auch nicht asynchron sind. Das gleiche gilt für Traps, die von der CPU bei Fehlern (geschützte Zugriffe, verbotene Instruktionen, Singlestep Debugging, Memory-Management-Ereignisse usw.) selbst ausgelöst werden und sinnvollerweise den gleichen Mechanismus benutzen.

[Bearbeiten] Ablauf eines Interrupts

prinzipieller Ablauf beim Auftreten eines Interrupts (Übergang von Hardware auf Software):

  1. Hardware bestimmt den Interruptvektor des IRQs mit der höchsten Priorität
  2. Hardware sichert Befehlszähler und Statusregister auf dem Stack
  3. Hardware holt neuen Befehlszähler (bei einigen Herstellern auch neue Statusregisterdaten) vom Interruptvektor
  4. Software der ISR sichert (engl.: store) auch alle selbst benutzten Register auf dem Stack, da sonst die Daten der unterbrochenen Task überschrieben (zerstört) würden.
  5. ISR läuft (je nach Aufgabe werden z. B. Ein- und/oder Ausgabendaten gepuffert z. B. Ringpuffer; hierbei gehen üblicherweise Zeitbezüge, nicht Reihenfolgen, verloren)
  6. Bei Bedarf kann nach Aufruf einer speziellen Betriebssystemfunktion durch die ISR eine entsprechende Task durch den Scheduler des Betriebssystems gestartet (geweckt) werden. Da das eine Zeit dauert, kann evt. zwischenzeitlich der gleiche Interrupt erneut auftreten, was im Algorithmus der ISR zu berücksichtigen ist.
  7. Software der ISR rücksichert (engl. restore) alle selbst gesicherten Register
  8. ISR beendet sich durch Rücksprung (Rückspeichern von Befehlszähler und Statusregister vom Stack, der dadurch wieder seinen alten Stand wie vor der Unterbrechung hat, so als wäre nichts gewesen)
  9. Die aufgerufene Task kann die weitere Bearbeitung der gepufferten Daten übernehmen

[Bearbeiten] Hardware-Beispiel x86-Architektur

Bei x86-Prozessoren gibt es 256 Interrupts. Wird ein Interrupt aufgerufen, egal ob von der Software oder von der Hardware, so werden Statusregister, Codesegment und Instruction Pointer auf dem Stack gesichert und zu einer Funktion gesprungen, deren Adresse - auch Interruptvektor genannt - in der Interrupttabelle steht.

Im Real Mode befindet sich diese Tabelle in dem ersten Kilobyte des Hauptspeichers (0000h:0000h-0000h:0400h). Jede Interruptnummer benötigt 4 Bytes: 2 Bytes für das Codesegment und 2 für den Offset innerhalb des Segments.

Im Protected Mode der CPU wird die Position in der Interrupt-Deskriptor-Tabelle festgelegt. Hier benötigt sie jedoch mehr Speicher, da hier für jeden Interrupt ein Deskriptor gebraucht wird.

[Bearbeiten] Weblinks

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu