Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » Hardware-Interrupt/Software-Interrupt???!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.11.2004, 21:59 Uhr
Unwissende
...die wirklich Unwissende 8-)


Hallo hallo,

Hab eine Vorlesung , die heißt: "Betriebssysteme" und ich hoffe, meine Frage passt wenigstens ein bisschen in dieses Forum:
In Zusammenhang mit Rechnerarchitekturen haben wir auch das Thema "Interrupts" in der Vorlesung angesprochen.
Dass ein Interrupt, die CPU zu kurzzeitigen Unterbrechung des aktuellen Progs bringt, das weiß ich ja, und dass dann eine ISR (Interrupt-Sercive-Routine) ausgeführt wird. Leider ist mir der "Hardware" bzw. "Software"-Interrupt nicht so ganz klar.

Mein genialer Vorlesungs-Mitschrieb sagt zu HW-Interrupts: "Über die Pins der CPU gesteuert; asynchron zum Programmablauf, z.B. bei der Prozessor-Uhr..." Naja.......
--> Wer erzeugt denn diese Interrupts? Die Prozossor-Uhr selbst? Woher kriegt dann die ihr Timing? Vom Oszi???

Zu den Software-Interrupts: "Synchron zum Programmablauf. Nicht von der CPU selbst generiert...Beispielsweise beim Programmfehlern wie z.B. Division durch "0"...
---> Das heißt, eine Software, die einen Fehler erkennt gibt der CPU einen Interrupt-Impuls. Die CPU arbeitet den Interrupt (numeriert) ab, und dann???
:
--
__________________________________
Unwissenheit ist vorläufig- Dummheit für immer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.11.2004, 22:13 Uhr
~mike
Gast


moin


Zitat:

Bei einem Hardwareinterrupt wird der Interrupt gezielt durch einen Hardware-Baustein oder durch ein Periphäriegerät ausgelöst. Dabei unterscheidet man zwischen maskierbaren (sperrbaren) und nicht maskierbaren Interrupts. Löst ein Gerät einen NMI (nicht-maskierbaren Interrupt) aus, so wird dem NMI-Anschluss des Prozessors ein aktives Signal zugeführt. Der Prozessor arbeitet den gerade ausgeübten Befehl ab und führt unmittelbar anschließend einen Interrupt 2 durch. Beim PC wird ein NMI nur ausgelöst, wenn ein schwerwiegender Hardwarefehler vorliegt.


Ein NMI hat absolute Priorität und wird immer als erstes bearbeitet!


Dem gegenüber können die Interrupt-Anforderungen IRQ maskiert werden. Diese Interrupts liegen am INTR Anschluss des Prozessors. Für die Bedienung von Hardware-Interrupts spielt der Interrupt-Controller eine wichtige Rolle. Er verwaltet mehrere Interrupt-Anforderungen und gibt sie geordnet nach Prioriät an den Prozessor weiter.



Zitat:

In der Informatik versteht man unter Interrupt (lat. interruptus, Unterbrechung) die kurzfristige Unterbrechung eines laufenden Programmes oder, genauer gesagt, einer von der CPU abzuarbeitenden Befehlssequenz, um einen anderen Prozess, die Interrupt-Routine, auszuführen. Anschließend wird die Ausführung des Programmes an der Unterbrechungsstelle fortgesetzt.


Sinn eines Interrupts ist z.B. die Möglichkeit einer schnellen Reaktion auf Signale von Ein/Ausgabe-Bausteinen oder Zeitgebern (Timern). Auch Multitasking wäre ohne Interrupts kaum möglich.


Ausgelöst werden Interrupts meist durch Elektronikkomponenten mittels einer so genannten "Unterbrechungs-Anfrage" (engl. Interrupt Request - IRQ). Die meisten Prozessoren kennen auch spezielle Interrupt-Befehle, um so genannte Software-Interrupts auszulösen. Bei den Hardwareinterrupts unterscheidet man zwischen maskierbaren Interrupts, deren Auslösung man (bei gewissen zeitkritischen Routinen) unterbinden kann, und nicht-maskierbaren Interrupts (NMI), die immer einen Sprung des Prozessors in die Interruptroutine auslösen.


Bei x86-Prozessoren gibt es 256 Interrupts. Wird ein Interrupt aufgerufen, egal ob von der Software oder von der Hardware, so werden Flagregister, Codesegment und Instruction Pointer auf dem Stack gesichert und zu einer Funktion gesprungen, deren Adresse 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 neue 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.


Quelle: http://de.wikipedia.org/

Vielleicht hilft das einwenig weiter
mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.11.2004, 23:12 Uhr
ao

(Operator)



Zitat von Unwissende:
Mein genialer Vorlesungs-Mitschrieb sagt zu HW-Interrupts: "Über die Pins der CPU gesteuert; asynchron zum Programmablauf, z.B. bei der Prozessor-Uhr..." Naja.......
--> Wer erzeugt denn diese Interrupts? Die Prozossor-Uhr selbst? Woher kriegt dann die ihr Timing? Vom Oszi???

Genau. Die Uhr ist im Prinzip ein Timer, der vom Takt getrieben wird. In regelmäßigen Abständen läuft er über, und bei jedem Überlauf wechselt ein Pin des Uhren-Bausteins für kurze Zeit den Pegel. Dieses elektrische Signal steuert einen Interrupt-Eingang an.

Zitat:
Zu den Software-Interrupts: "Synchron zum Programmablauf. Nicht von der CPU selbst generiert...Beispielsweise beim Programmfehlern wie z.B. Division durch "0"...
---> Das heißt, eine Software, die einen Fehler erkennt gibt der CPU einen Interrupt-Impuls. Die CPU arbeitet den Interrupt (numeriert) ab, und dann???

Es gibt im Befehlssatz der CPU einen Befehl, an eine bestimmte Stelle in der Interrupt-Tabelle zu springen und den dort vorgefundenen Code auszuführen. Das ist also kein elektrisches Signal, sondern eine Instruction; sie bewirkt aber im Prinzip dasgleiche. Es wird in die Interrupt-Tabelle gesprungen und von dort weiter in die zum Interrupt (d.h. zu der betreffenden Nummer) gehörende Behandlungsroutine. Meist wird hier versucht, den Fehler so zu reparieren, dass zumindest das Betriebssystem lebendig bleibt, und es wird eine Information über die Art des Fehlers hinterlegt, die das Betriebssystem oder das betroffene Anwendungsprogramm abholen und dem Benutzer anzeigen kann. Nach Ende der Behandlungsroutine wird zurückgesprungen an die Stelle, von der man gekommen ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.11.2004, 23:22 Uhr
Hans
Library Walker
(Operator)


Hi,
ich versuch mal, mich kurz zu fassen Aaalllsoo:

Hardware-interrupts:
Eine (PC-)CPU hat zwei Interruptleitungen:
- eine für den Non Maskable Interrupt, NMI und
- eine für den Maskable Interrupt. Die Maskierbarkeit bezieht sich auf das erlauben, bzw. verbieten von Interrupts. Das heisst wenn ein maskable IRQ maskiert ist, ist er abgeschaltet, bzw, verboten. Die CPU wird eine IRQ-Anfrage dann nicht bearbeiten, sondern das Programm fortsetzten, an dem sie arbeitet.
Dem gegenüber steht der NMI, der sich nicht abschalten lässt. Wenn der auftritt, verzweigt die CPU immer in die Serviceroutine die zum NMI dazu gehört.

Hardwareinterrupts werden immer durch einen Impuls an den Interruptleitungen ausgelöst; (deshalb heissen sie ja auch so ) Da es aber verschiedene Geräte gibt, die das können, spielen zumindest im PC auch Interruptcontroller eine Rolle, also Zusatzbausteine, mit denen sich die Interrupt-anforderungen von verschiedenen Geräten "sortieren" lassen. Im PC sind das genau 16, und zwar jene, die man beachten muss, wenn man weitere Hardware einbauen will. (Zumindest war es mal so, ob Plug'n play in diesem Zusammenhang inzwischen sauber funktioniert, weis ich nicht.)
Über dem Interruptcontroller werden den Geräten, bzw. deren IRQs Prioritäten zugeordnet, so das immer einer den Vorrang vor einem anderen hat, falls zwei Geräte zur selben Zeit die Aufmerksamkeit der CPU verlangen. Eine sehr hohe Priorität hat dabei die Systemuhr, oder der System-Timer. Der erzeugt in regelmässigen Abständen einen IRQ, der den System-Schedular (Task-switcher) aufruft. Das ist jener Teil des Betriebssystems, dem die Kontrolle des Multitasking unterliegt, und der dieses überhaupt erst ermöglicht, weil er zwischen den laufenden Prozessen oder Threads umschaltet. Dieser Interrupt ist maskierbar. Muss er auch sein, denn wenn der Task-switcher gerade einen Prozess unterbricht, um einem anderen Rechenzeit zu geben, darf er nicht unterbrochen werden, weil sonst chaos ausbrechen würde.
Dann ist da noch der NMI, also der Nicht-maskierbare Interrupt. Der ruft bei Windows meisst direkt den Task-switcher auf (Strg-Alt-Einfg), damit man Prozesse beenden (abschiessen) kann, die sich nicht mehr kontrollieren lassen, weil sie abgestürzt sind oder in einer Endlos-schleife hängen.

Softwareinterrupts:
Die werden bei Intel-CPUs durch abarbeiten des int-Befehls ausgelöst, wobei int für interrupt steht. Dazu gehört noch eine Nummer zwischen 0 und 255, womit wir bei den 256 (Software-)Interrupts von Intel-CPUs wären.

Was der genaue Sinn von Softwareinterrupts sein soll, muss man mal die Erfinder bei Intel fragen. Mir zumindest ist nicht klar, wozu die gut sein sollen, weil man dass, was man damit baut ebenso gut mit Unterprogrammen (-funktionen) realisieren kann. (Ich weis z.B. dass das System-API von DOS auf Interrupts aufgebaut ist. Aber warum man dafür Interrupts anstelle von Unterprogrammen verwendet, ist mir nicht klar, führt aber auch von Thema weg.)
...
Eine Anwendung für SoftwareInterrupts ist mir noch eingefallen, und zwar die Ausnahmebehandlung. Wenn also Fehler wie Division durch Null, Segmentation-fault oder sowas auftritt. Dann kann dadurch gesteuert werden, wie auf solche Ereignisse zu reagieren ist.

Hans,
dessen Ausführungen jetzt doch nicht so kurz ausgefallen sind...
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.11.2004, 02:09 Uhr
ao

(Operator)



Zitat von Hans:
Was der genaue Sinn von Softwareinterrupts sein soll, muss man mal die Erfinder bei Intel fragen. Mir zumindest ist nicht klar, wozu die gut sein sollen, weil man dass, was man damit baut ebenso gut mit Unterprogrammen (-funktionen) realisieren kann. (Ich weis z.B. dass das System-API von DOS auf Interrupts aufgebaut ist. Aber warum man dafür Interrupts anstelle von Unterprogrammen verwendet, ist mir nicht klar, führt aber auch von Thema weg.)

Weil mans dadurch schafft, dass ein Satz von Lowest-Level-Routinen automatisch mit dem Motherboard zur Verfügung steht, und zwar allen Betriebssystemen und allen Runtime-Bibliotheken, die diese Interrupts verwenden.

Sie müssen dann nicht als linkbares Object oder Library für alle möglichen Compiler geliefert werden, sondern sind einfach im Flash-ROM auf dem Motherboard gespeichert, und jeder kanns verwenden.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.11.2004, 21:33 Uhr
Hans
Library Walker
(Operator)



Zitat von Hans:

Aber warum man dafür Interrupts anstelle von Unterprogrammen verwendet, ist mir nicht klar, führt aber auch von Thema weg.)



Zitat von ao:

Weil mans dadurch schafft, dass ein Satz von Lowest-Level-Routinen automatisch mit dem Motherboard zur Verfügung steht, und zwar allen Betriebssystemen und allen Runtime-Bibliotheken, die diese Interrupts verwenden.

Sie müssen dann nicht als linkbares Object oder Library für alle möglichen Compiler geliefert werden, sondern sind einfach im Flash-ROM auf dem Motherboard gespeichert, und jeder kanns verwenden.

ao



Hi,
die Erklärung klingt ja logisch, aber wenn ich da so an meinen C64, bzw. C128 Heimcomputer denke, stell ich mir die Frage immer noch. Denn da war auch ein ganzer Schwung Low-LevelRoutinen in einem ROM (neben dem Betriebssystem, das da ebenfalls im ROM residiert.) Damit die Routinen den Softwareentwicklern zur Verfügung stehen, ist am oberen Ende des Speichers eine Sprungtabelle unter gebracht, von der aus es in die eigentliche Routine geht. In der Doku sind denn auch die Adressen der Sprungtabelle angegeben, und, wie sie aufgerufen werden: nämlich mit JSR, also Jump to SubRoutine. Die Sprungtabelle bildet dabei das eigentliche API. Das die Routinen so gestaltet sind, das man alle benötigten Parameter direkt über die Prozessor-register übergibt, ist ja dann wieder wie bei DOS. Es gab, glaube ich nur ein paar wenige Routinen, die mehr Parameter brauchten, als Prozessor-Register zur Verfügung standen, aber die wurden dann meisst über die Zero-page übergeben...

Hans

P.S. Dann gab es ja noch den RISC-PC von Acorn, bei dem das gesamte Betriebssytem samt GUI in einem ROM (2MB, oder so ähnlich) untergracht war.
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 04.11.2004 um 21:41 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: