中断向量

中断向量是中断服务程序的入口地址,在计算机中中断向量的地址存放一条跳转到中断服务程序的跳转指令。

中断地址是存储中断向量的内存单元。

中断向量表:用来存放中断向量(共256个),它的地址范围是0~3FFH

在arm处理器中中断向量的大小为4个字节。在中断向量里面不是存储的中断服务程序的入口地址,而是跳转到中断服务程序的可执行代码。

中断号:

微机通过中断号对应中断向量值,再通过中断向量的值跳转到中断服务程序。

中断向量表:

CPU要通过中断号来找到中断向量,所以要在内存中建立一张中断向量查询表。(在32位保护模式下该表称为中断描述符表),因为32位微机中有256个中断向量,每个中断向量大小为4Byte,所以整张表大小为1KB。因为中断向量按照中断号从0地址开始顺序排列,所以任意一个中断号为N的中断向量的地址为中断号N*4。

在BIOS执行初始化操作时,它设置了两个8259A芯片支持的16个硬件中断向量和BIOS提供的中断号为0x10~0x1f的中断调用功能向量等。对于实际没有使用的向量则填入临时的哑中断服务程序的地址。以后在系统引导加载操作系统时会根据实际需要修改某些中断向量的值。例如,对于DOS操作系统,它会重新设置中断0x20~0x2f的中断向量值。

对于LINUX系统,只有在内核加载时用到BIOS提供的显示和磁盘读写中断,在内核启动前会在setup.s程序中重新初始化8259A芯片,并在head.s中重新设置一张中断向量表。完全抛弃BIOS的中断向量表。

猜你喜欢

转载自blog.csdn.net/qq_36171263/article/details/89515165
今日推荐