49 - 5.3.4 Rechnerorganisation: Synchrone und asynchrone Programmunterbrechungen [ID:15895]
50 von 200 angezeigt

Nun, wir haben gesehen, dass diese Trebs und Interrupts eben Programmunterbrechungen sind,

Ausnahmen, die eben die Unterbrechung von Programmen, die sich in Ausführung befinden, bewirken.

Und ein wichtiger Punkt dabei ist der Prozessorstatus, der ist invariant zu halten,

zumindest komplett invariant für eine bestimmte Form von Programmunterbrechung.

Und das bedeutet, er ist zu sichern, bevor man die Ausnahmebehandlung startet und er ist am Ende,

bevor man die Wiederaufnahme der Programmausführung vornimmt, eben wieder herzustellen.

Und da, mit diesen Aspekten, wollen wir uns hier im Detail beschäftigen und mal auseinandernehmen,

welche Prozessoren, abstrakte, reale Prozessoren, an diese Sicherung und Wiederherstellung,

in welcher Art und Weise denn beteiligt sind. Es geht hier um die Ausnahmen von den normalen

Programmausführungen. Das heißt also, diese Unterbrechungen, die betrachten wir als unnormale

Ereignisse, die den unterbrochenen Programmaablauf einfach unerwünscht verzögern und insbesondere

auch dann besonders kritisch sind, wenn ja diese Unterbrechungen einfach nicht durch

diesen Programmauslauf selbst verursacht sind. Wir hatten schon Beispiele davon genannt.

Hier ist nochmal so eine Liste zusammengefasst. Signale von der Peripherie, etwa so ein Ausgabegeräte,

die Interrupt schicken können, Wechsel der Schutzdynamäne, etwa so was wie ein Systemerwurf,

ein typischer Trepp, eine ungültige Adresse, ein Programmierfehler wäre auch ein Trepp,

unerfüllbare Speicheranforderungen, wenn wir eine Regression haben und die Regression einfach

zu tief geht und wir dann halt einfach aus dem Stapelspeicher rauslaufen würden, könnte

es zu einer solchen Unterbrechung kommen. Das wäre dann eben auch ein Trepp. Wir haben

eine Einlagung auf Anforderungen, das ist Demand Paging, wie man so schön sagt. Also

es ist ein Seitenfehler, der auftreten kann. Das kann Trepp oder ein Interrupt sein und

wir haben irgendwelche Warnsignale von der Hardware, also etwa Energiemangel, da wir

nicht wissen, wann denn wirklich so ein Energiemangel oder vielleicht ein Hitzestau in der CPU existiert,

weshalb denn solche Warnsignale angezeigt werden, sind es typischerweise die Interruptsiebe

haben. Solche Behandlungen für diese unnormalen oder ungewünschten Ereignisse sind durch

Maßnahmen durchzuführen, die unabdingbar innerhalb von Betriebssystemen sind. Aber wenn

es um Ereignisbehandlung geht zu Außensituationen, die man auf der Maschinenprogramm-Ebene platziert,

dann kann man dadurch auch durchaus die Option wählen zu sagen, wir wollen solche Ereignisse

auf der Maschinenprogramm-Ebene einfach gar nicht behandeln. Wie man eben weiß, Signale

kennt man zwar von POSIX-ähnlichen Systemen, aber nicht jedes Programm ist gezwungen,

wenn letztendlich ein Signal-Händler oben auf der Maschinenprogramm-Ebene, also in dem

eigentlichen C-Programm, was wir formulieren, dann halt zu platzieren. Aber wir sind, wenn

wir uns auf der Betriebsdemende befinden, gezwungen, letztendlich Trepp- und Interrupt-Händler

zu haben, weil diese Trepps und diese Interrupts garantiert von der Hardware signalisiert werden.

Damit ist denn diese Behandlung dieser Ereignisse immer problemschpezifisch, je nach Ursache

im Endeffekt auszulegen und eben auch je nach Ebene der Betrachtung. Nun generell sind solche

Programmunterbrechungen eigentlich nichts weiter als nicht lokale Sprünge. Wir sagen,

das ist ein abrupter Wechsel des Laufzeitkontexts. Man befindet sich in einem bestimmten Kontext,

zum Beispiel in einem Programm, das sich in Ausführung gerade befindet, etwa auf der

Maschinenprogramm-Ebene, in einem bestimmten Prozess darin. Dieses Programm wird unterbrochen

und man wechselt dann von diesem unterbrochenen Prozess hin zu einem Prozess, der in der Lage

ist, diese Unterbrechung zu behandeln. Also man würde zum Beispiel von der Maschinenprogramm-Ebene

runterwechseln in die Betriebssystem-Ebene. Wenn es etwa ein Trepp wäre oder ein Interrupt

wäre, der bei der Ausführung eines Maschinenprogramms im nicht privilegierten Arbeitsmodus gerade

signalisiert werden würde. Und umgekehrt, am Ende dieser Behandlung wechselt man schlichtweg

zurück von dem behandelnden Prozess hin zu dem unterbrochenen Prozess. Man wird wirklich

Domänen durchaus Grenzen überwinden, man macht Ebenenwechsel im Endeffekt. Es sind

definitiv nicht lokale Sprünge, die außerhalb der jeweiligen Ebene herausgehen, auf der

man sich gerade bei der Programmausführung befindet. Die Unterbrechungshandhaber, die

Händler, die dann zuständig sind, um die Behandlung durchzuführen, die werden plötzlich

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

00:20:44 Min

Aufnahmedatum

2020-05-15

Hochgeladen am

2020-05-15 14:16:19

Sprache

de-DE

Tags

module programmstruktur Variablen Datentypen Preprozessor Gültigkeit
Einbetten
Wordpress FAU Plugin
iFrame
Teilen