异常是我们经常听到的一个词,“系统发生了异常”,“是不是异常导致的?”。但是我们真的了解异常吗,或者有没有想了解一下他到底是什么,以及发生以后的一些细节呢?这篇文章就多个方面来展示一下“异常”。
中断我们也会常常听到,文章会先介绍中断和异常的区别和共同点,以及跟他们关联的中断(异常)向量表,中断(异常)处理例程。
具体的,“异常”其实是cpu提供的一个机制——当cpu当执行指令过程中出错了,有可能是操作数不合理导致的,有可能是访问权限有问题等等,从而产生异常,接着操作系统会对这个异常进行分发处理。如果有调试器会中断到调试器。
操作系统的分发处理,下文会两个方面进行介绍:
1)异常的核心的数据结构
2)异常分发机制
异常除了cpu异常外,还有软件异常。文章中也会涉及到寄存器的知识。
用一句话概括就是:在保护模式下,当cpu有中断或者异常发生的时候,cpu(硬件)通过IDT来寻找处理函数,这便是操作系统(软件)的中断和异常机制开始的地方。
目录
引发异常过程:RaiseException 和 RtlRaiseException 和 NtRaiseException 和 KiRaiseException
KiDispatchException对于内核态异常的分发过程
KiDispatchException对于用户态异常的分发过程
IDT中存的是段描述符,其实这里也叫门描述符,分成三种类型: