Forum: Mikrocontroller und Digitale Elektronik wozu braucht man eigentlich software interrupts?


von Paul H. (powl)


Lesenswert?

Hi, kann mir vielleicht jemand sagen wozu Software Interrupts gut sein 
sollen weil davon immer in diversen Tutorials und Büchern ganz groß 
geredet wird.

mfg Paul H.

von Peter D. (peda)


Lesenswert?

Softwareinterrupts sind wie stinknormale Funktionsaufrufe, braucht man 
also auf MCs überhaupt nicht.

Sie sind nur auf CPUs mit Betriebssystem und verschiedenen 
Ausführungsleveln sinnvoll, um API-Funktionen aufzurufen.
Der einzige Unterschied zu normalen Funktionsaufrufen ist dann der, daß 
sie wie Interrupts mit höheren Zugriffsrechten laufen. Daher heißen sie 
fälschlicher Weise Interrupts.

Es sind aber keine Interrupts, die das Hauptprogramm zufällig 
unterbrechen können, sondern Unterfunktionen, die eben nur an den 
Stellen ausgeführt werden, an denen sie explizit aufgerufen werden.

Es können also wie bei Funktionen Parameter übergeben werden und es sind 
keine gekapselten Zugriffe auf gemeinsame Variablen notwendig.


Peter

von Christian (Gast)


Lesenswert?

Softwareinterrupts werden bei CPUs z.B. verwendet, um 
Betriebssystemfunktionen aufzurufen. Natürlich könnte man das auch über 
Unterfunktionsaufrufe lösen, aber je nach Architektur nimmt einem die 
Hardware bei einem Softwareinterrupt manche Verwaltungstätigkeiten 
(Kontext sichern, in einen höher privegierten Betriebsmodus 
umschalten...) ab, die man für einen Betriebssystemaufruf erledigt haben 
möchte.

Bei einem kleinen uC ohne Betriebssystem halte ich Softwareinterrupts 
hingegen nicht für notwendig, auch wenn es auch dort Architekturen gibt, 
die sowas implementieren.

von crazy horse (Gast)


Lesenswert?

ne, ganz so einfach ist das nicht. Allerdings findet man auf den ganz 
einfachen MCs tatsächlich keine.
Könnte z.B. sein:
-unbekannter instruction-code
-Division durch 0
-fehlerhafte FP-Operation(NaN, +INF, -INF)
-diverse "verbotene" Speicherzugriffe (z.B. stack under/overflow)
Gibt noch ein paar andere sinnvolle Möglichkeiten

von Andreas K. (a-k)


Lesenswert?

Software-Interrupts werden zur Vermeidung dieser Verwirrung manchmal 
auch Software-Traps genannt. Durchgeführt werden sie von speziellen 
Befehlen und es wird zunächst ein Trap-Handler aufgerufen, der abhängig 
von weiterem Inhalt des Trap-Befehls oder eines Registers weiter 
verzweigen kann. Darin wird meist die Nummer einer Funktion angegeben, 
nicht deren Adresse.

In Betriebssystemen werden solche Traps für den Aufrufe der 
Betriebssystemfunktionen verwendet, weil das aufrufende Programm im 
Anwendermodus arbeitet, die Betriebssystemfunktionen jedoch im 
privilegierten Modus.

Ohne Betriebssystem findet man das manchmal auf ARMs. Sofern nämlich das 
Hauptprogramm im nichtprivilegierten Modus läuft. Dann müssen Traps für 
einzelne privilegierte Funktionen implementiert sein, wie 
Ein/Ausschalten von Interrupts. Geschmacksfrage, manche schwören drauf, 
ich halte das in einer betriebssystemfreien Umgebung für sinnlos.

von Andreas K. (a-k)


Lesenswert?

> -unbekannter instruction-code
> -Division durch 0
> -fehlerhafte FP-Operation(NaN, +INF, -INF)
> -diverse "verbotene" Speicherzugriffe (z.B. stack under/overflow)
> Gibt noch ein paar andere sinnvolle Möglichkeiten

Das sind keine Software-Interrupts/Traps sondern Hardware-Traps. Zum 
Software-Interrupt/Trap wird es durch Vorsatz und dafür vorgesehene 
Befehle.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.