オペレーティング システムの観点から、例外はどのように機能しますか?
C++ 出身なので、プログラマーの観点から例外を理解できます。
例外がスローされると、スタックはアンワインドを開始し、各アクティベーション レコードには例外をキャッチして処理する機会があります。
しかし、そもそも例外をスローしたのは誰の責任だったのでしょうか?
- 「例外処理状態」に入るように指示するトリガーをプロセスに送信するのはオペレーティングシステムですか?
- プロセスは独自のプログラム空間で例外を呼び出して処理しており、OS には認識されていませんか?
私の不確実性を示す 2 つのクラッシュするプログラムを次に示します。
int main(){
int i = 1/0; //did the OS tell the process to end?
return 0;
}
#include <exception>
int main(){
throw 11; //did the process tell the OS it needs to end?
return 0;
}