中断概述:
什么是中断,简单地说就是CPU在忙着作自己的事情,这时候硬件(比如说键盘按了一下)触发了一个电信号,这个信号通过中断线到达中断控制器(cpu),控制器接受到这个信号,向CPU发送INT信号申请CPU来执行刚才的硬件操作,并且将中断类型号也发给CPU,此时CPU就丢下自己正在做的事情,但不是随便丢到旁边而是保存了当前正在做的事情的相关资料,然后去处理这个申请,根据中断类型号找到它的中断向量(也就是中断程序在内存中的地址),然后去执行这段程序(这段程序是已经写好的,在内存中),执行完后再向控制器发送一个INTA信号表示我已经处理完你刚才的申请。这个时候CPU就可以继续做它刚才被打断做的事情了,这个时候刚才保存的相关信息就帮助CPU接着执行下面的程序,而不至于忘记自己刚才正在做什么。
上面说了一大堆关键词有四个:
中断源:这里的中断源是指打断CPU的事件,没有中断源中断无从谈起,它可以是硬件的也可以是软件的。
CPU:不用说中断就是要来用CPU来处理一些事情的
中断控制器:硬件中断源与CPU之间的桥梁,没有它中断就无法被CPU所知道。
中断服务程序:你打断了CPU,CPU就得根据这个程序来为你办事
中断的分类:
硬件中断,总的来说可以将中断分为内部中断和外部中断,内部中断也叫软中断是由CPU产生的,当处理起执行时遇到了由于程序员编程而导致的错误指令时,如除数为0,这些就会产生内部中断,而外部中断(硬件中断)一般都是硬件所引起的中断比如说键盘等。
中断号:
这里所说的中断号是指外部中断即硬件中断的编号,系统为每个“中断请求线”分配了一个号,当CPU不能满足外设要求的中断时,就有了多个外设共享一个中断号。中断号是用来表明是那个设备产生了中断,比如作为时钟中断的IRQ0。这样CPU就可以知道是那个设备产生了中断从而去处理它。
中断向量:
前面所将的中断号与中断向量之间的关系是:中断号+32 = 中断向量。中断向量的作用将在下面介绍。
中断描述符表(IDT):一个表,也叫中断向量表,每个表项叫做门描述符(gate descriptor)占8个字节,简单的说是用来存放中断处理程序入口函数地址,当然还包括了一些其他信息。其作用就是当一个中断发生时我们根据它的中断号确定其中断向量,然后在此表中找到它的入口函数从而执行它。这个表存放在内存中的一片区域中,那么我们如何找到这个表呢?这就需要一个系统寄存器中断描述符寄存器IDTR,在系统初始化时有一条汇编指令LIDT便可将中断描述符表的地址装进IDTR中,IDTR48位,在低字(低16位)中装的是界限,在高双字(高32位)中装的是基址。
阅读(2872) | 评论(0) | 转发(0) |