Betriebssysteme (7) - Software Interrupt

in #de-stem5 years ago

In dem letzten Beitrag haben wir die Unterbrechungen kennengelernt die von der Hardware ausgeht.
Aber auch die Software kann Unterbrechungen (traps) auslösen. Der Unterschied zu der Hardware-Unterbrechung ist, dass eine Software-Unterbrechung von dem geraden ausgeführten Programm verursacht wird. So eine Unterbrechung ist reproduzierbar, wenn das Programm noch einmal ausgeführt wird, passiert die Unterbrechung genau an derselben Stelle des Programms.

Bei einer Software-Unterbrechung kann es ganz verschiedene Ursachen geben, zum Beispiel will das Programm eine Division durch null oder einen Zugriff auf nichtexistierende oder geschützte Hauptspeicheradressen ausführen; für solche Unterbrechungen wird auch die Bezeichnung Ausnahme (exception) verwendet.

Systemaufrufe

Eine andere Art von Software-Unterbrechung stellt dagegen keine Ausnahme dar; sie ist vielmehr ein übliches Verfahren zur Kontrollübergabe. Wann immer ein Programm Dienste des Betriebssystems in Anspruch nehmen will, führt es einen Systemaufruf (system call) durch. Die verfügbaren Systemaufrufe bilden zusammen die Programmierschnittstelle zwischen den Anwenderprogrammen und dem Betriebssystem (Die Programmierschnittstelle wird in einem späteren Beitrag seperat behandelt).
Solch ein Systemaufruf hat die Form eines Funktionsaufrufs. Insbesondere können dabei auch Parameter übergeben werden, entweder direkt in einem Register der CPU oder indirekt durch Angabe der Anfangsadresse des zu übergebenden Datenbereichs im Hauptspeicher; dieses Vorgehen empfiehlt sich bei großen Datenmengen wie zum Beispiel Bildschirminhalten. Man kann zur Parameterübergabe auch den Stapel des Systems benutzen.

Wenn der Systemaufruf seine Parameter für die Übergabe vorbereitet hat, führt er eine besondere Instruktion trap aus, die die eigentliche Unterbrechung auslöst. Diese Instruktion ist bei allen Systemaufrufen dieselbe; der gewünschte
Systemdienst wird beim Aufruf durch einen Parameter bezeichnet. Jetzt geschieht in etwa dasselbe wie bei einer Hardware-Unterbrechung: Befehlszähler- und Registerinhalte werden gerettet, und in Abhängigkeit vom übergebenen Parameter für den gewünschten Dienst wird eine entsprechende Routine des Betriebssystems gestartet, die nun die Rolle der Unterbrechungsroutine spielt. Bei Systemaufrufen werden meistens Daten an das aufrufende Programm zurückgegeben. Also ist die Unterbrechung der Mechanismus für die Aktivierung vom Betriebsystem.

Wer in einer Hochsprache programmiert, wird möglicherweise nicht immer bemerken, dass sein Programm Systemaufrufe auslöst: Zum Beispiel gibt es in Java einen Standardbefehl namens read, mit dem ein Datensatz einer Datei gelesen werden kann. Ein solcher Befehl wird vom Compiler automatisch in einen entsprechenden Systemaufruf übersetzt, ohne dass der Programmierer die Details kennen muss.

Quelle
Ayehsa, Saleem et. al. Review: Interrupt. In: I.J. Information Technology and Computer Science. 2018. DOI: 10.5815/ijser.2018.04.01

Sort:  

Ist zwar nicht mein Thema, aber Ausdauer und das stetige Liefern von Mehrwert müssen ab und an belohnt werden...

!BEER & !trdo & !invest_vote

Congratulations @kryptodenno, you are successfuly trended the post that shared by @ozelot47!
@ozelot47 will receive 0.40833113 TRDO & @kryptodenno will get 0.27222075 TRDO curation in 3 Days from Post Created Date!

"Call TRDO, Your Comment Worth Something!"

To view or trade TRDO go to steem-engine.com
Join TRDO Discord Channel or Join TRDO Web Site



This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie and @minnowbooster.

If you appreciate the work we are doing, then consider supporting our witness @stem.witness. Additional witness support to the curie witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Please consider using the steemstem.io app and/or including @steemstem in the list of beneficiaries of this post. This could yield a stronger support from SteemSTEM.

ohne dass der Programmierer die Details kennen muss.

Hab ich mir schon öfter gedacht, die Dinge werden so komplex, dass man als Entwickler immer weniger von dem weiß, was im Hintergrund abläuft. Software die sich selbst programmiert bzw. erweitert, wer weiß was dabei rausgekommt.

Interessant aber auch beängstigend.

Congratulations @ozelot47, your post successfully recieved 0.40833113 TRDO from below listed TRENDO callers:

@kryptodenno earned : 0.27222075 TRDO curation


To view or trade TRDO go to steem-engine.com
Join TRDO Discord Channel or Join TRDO Web Site

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63281.14
ETH 2674.11
USDT 1.00
SBD 2.79