当前位置:   article > 正文

异常、中断与异常向量表_异常向量表和中断向量表

异常向量表和中断向量表

一、异常与中断

1、异常

异常是一种特殊的事件,它会打断程序的正常执行流程。中断可以由硬件设备甚至是CPU自身触发。当发生中断时,当前程序的执行流程被暂停,然后运行中断处理程序。中断处理程序运行完毕之后,之前运行的执行流程会被恢复。

2、中断

中断可分为两类:同步中断和异步中断。

(1)同步中断:

又称异常,由执行指令触发,用于处理处理器在执行指令过程中检测到的条件。除0、系统调用都是异常的例子。

(2)异步中断:

又称中断,由外部事件触发,是由IO设备产生的外部事件。

(3)相同之处:

中断是一种特殊的异常。

(4)不同之处:

a、触发条件:

中断:当硬件设备发生故障时,如磁盘读写错误、键盘按键输入等,会发送中断信号给操作系统;异常:是当软件程序执行过程中发生错误,如除0、访问不存在的内存地址等,会触发异常。

b、处理方式:

中断:操作系统受到信号后,会暂停当前进程,并切换到中断服务程序进行错误处理;

异常:操作系统受到异常信号后,会暂停当前正在执行的进程,并切换到异常处理程序进行处理。

c、处理目的不同:

中断:中断处理的目的是保证硬件设备的正常运行,并尽可能快的恢复正常服务;

异常:异常处理的目的是保护软件程序的正常运行并尽可能快的恢复正常服务。

d、来源不同:

中断:中断是一种不由程序引发的异常。

异常:异常是一种引起指令正常执行顺序改变的事件。

e、同步与异步:

中断:异步。

异常:同步。

二、异常向量表

本篇文章主要讲述Arm架构下的异常处理过程。

异常向量与异常向量表:

当发生异常时,处理器必须执行与异常对应的处理程序代码。存储处理程序的内存位置称为异常向量。在ARM架构中,异常向量存储在一个表中,称为异常向量表。

每个异常级别都有自己的向量表,即EL3、EL2和EL1各有一个。该表包含要执行的指令,而不是一组地址。这些通常是将核心引导到完整异常处理程序的分支指令。

基地址由VBAR_ELn给出,并且每个条目具有从该基地址的定义的偏移。每个表具有16个条目,每个条目大小为128字节 (32条指令)。该表实际上由4组4个条目组成。

2、异常处理过程:

中断产生,向系统发送中断信号,系统在接收到异常信号后保存上下文,并进入异常向量表内寻找相应的异常向量,根据异常向量的指示跳转到相应的异常处理程序,解决完异常后回复上下文,回到正常的程序流。

参考:

Connect User Guide Version 0.1:AArch64 Exception and Interrupt Handling Version 1.0

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/973635
推荐阅读
相关标签
  

闽ICP备14008679号