Betriebssystem und Hardware
Warum wird beim Zurückkehren zum ursprünglichen Programm nach einer Interrupt- oder Ausnahmebehandlung ein spezieller Rückkehrbefehl (z. B. sret oder mret bei RISC-V) statt eines gewöhnlichen Rücksprungbefehls verwendet?
- AWeil der spezielle Befehl eine kürzere Befehlslänge hat
- BWeil neben der Rücksprungadresse auch Modus und Interrupt-Zustand wiederhergestellt werden
- CWeil der Handler die Rücksprungadresse mit einem gewöhnlichen Rücksprungbefehl nicht kennt
Antwort und Erläuterung anzeigen
Antwort: B. Weil neben der Rücksprungadresse auch Modus und Interrupt-Zustand wiederhergestellt werden
Tritt eine Ausnahme oder ein Interrupt auf, sichert die CPU in speziellen Registern die Rücksprungadresse sowie den bisherigen Betriebsmodus und ob Interrupts erlaubt waren, und wechselt in den privilegierten Modus. Bei der Rückkehr müssen diese gleichzeitig wiederhergestellt und in den Benutzermodus zurückgestuft werden, bevor zum ursprünglichen Befehl gesprungen wird; sonst läuft die Ausführung mit Privilegien weiter. Der spezielle Rückkehrbefehl erledigt dies unteilbar in einem Befehl. Es geht nicht um die Befehlslänge, und die Rücksprungadresse ist aus dem gesicherten Register bekannt.