从操作系统的角度来看,异常是如何工作的?
来自 C++,我可以从程序员的角度理解异常。
当抛出异常时,堆栈开始展开,每个激活记录都有机会捕获和处理异常。
但是首先抛出异常是谁的责任呢?
- 是操作系统向进程发送触发器,告诉它进入“异常处理状态”吗?
- 进程是否在它自己的程序空间中调用和处理异常,对操作系统来说是不发音的?
这里有两个崩溃的程序说明了我的不确定性。
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;
}