上几篇文章学习了分页机制的一些原理:
今天继续学习保护模式下的关于中断与异常的概念。本文主要学习中断与异常的区别。
在以下文章中我也写过关于中断的文章,可以参考学习:
1、中断和异常
中断和异常的作用是指示系统中的某个地方发生了一些事件,需要引起处理器以及正在执行的程序的注意。当中断和异常发生时,典型的结果是迫使处理器将控制从当前正在执行的程序或者任务转移到另一个例程或者任务中去。该例程叫做中断处理程序,或者叫做异常处理程序。如果是一个任务,则发生任务切换。
1.1 中断
中断包括硬件中断和软中断。
硬件中断是由外围设备发出中断信号引起的,以请求处理器提供服务。硬件中断完全是随机的,与处理器的执行并不同步。当中断发生时,处理器要先执行完当前的指令,然后才对中断进行处理。
1.2 异常
异常就是内部中断。它们是处理器内部产生的中断,表示在指令执行的过程中遇到了错误的状态。
当处理器执行一条非法指令(如除零指令),或者因为条件不具备,指令不能正常执行时,将引发这种类型的中断。
异常分为三种:
- 程序错误异常:处理器再执行指令时,检测到程序的错误,并由此而引发的异常
- 软件引发的异常:这类通常是由into、int3和bound指令主动发起的。比如中断的单步调试,就是利用int3指令进行的。
- 机器检查异常:这种是与处理器型号相关的一些问题。我们不关心这种问题
根据异常情况的性质和严重性,异常又可以分为以下三种:
- 故障:故障通常是可以纠正的。比如,缺页,这实际上是一种故障,只需要处理器将磁盘上对应的页拷贝到相应的页面即可。故障一般是由好处的
- 陷阱:陷阱通常用于调试目的。比如单步调试一般使用int3指令,这其实是一种陷阱。
- 终止:终止意味着严重的错误,比如硬件错误,系统表(GDT,LDT等)中的数据不一致或者无效。一个比较典型的终止类异常是“双重故障”,一般无法修复。
中断和异常发生时,处理器将挂起当前正在执行的过程或者任务,然后执行中断异常处理过程。返回时,处理器恢复程序或者任务的执行,而且被打断的程序或者任务的执行不失连续性,除非遇到一个终止类的异常。
对于某些异常,处理器会在转入异常处理程序之前,会在当前栈中压入一个称为错误码的数值,帮助程序进一步诊断异常产生的位置和原因。
下表列出了保户模式下的中断和异常向量分配:
2 总结
本文主要学习保护模式下的关于中断与异常的概念。
详细的内容还是要参考原书籍,这里只是做一个简单的总结。
学习探讨加个人:
qq:1126137994
微信:liu1126137994