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
Presenters
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