当前位置: 技术问答>linux和unix
求教,电脑是怎么检查中断的
来源: 互联网 发布时间:2017-05-02
本文导语: 听说是,CPU执行完每条指令时都会去检查一个中断标志位,然后根据这个标志位来判断是不是有中断,但是这样效率是不是太低了,可以说cpu有二分之一的时间都用来检查是否有中断了。 但是,真真的情况是什么? ...
听说是,CPU执行完每条指令时都会去检查一个中断标志位,然后根据这个标志位来判断是不是有中断,但是这样效率是不是太低了,可以说cpu有二分之一的时间都用来检查是否有中断了。 但是,真真的情况是什么?
|
并不低效。
CPU的引脚有INTR。具体的中断管理是由8259A中断控制器来管理的。
发生中断时,8259A会给INTR信号,并给出对应的中断向量号。
这些东西会存在CPU内部的锁存器里,CPU执行完指令就检查这个,注意这个检查过程并不是执行一个新的指令、也无须访内存。所以并不需要1/2那么长时间,因为往往是硬件实现的。
CPU的引脚有INTR。具体的中断管理是由8259A中断控制器来管理的。
发生中断时,8259A会给INTR信号,并给出对应的中断向量号。
这些东西会存在CPU内部的锁存器里,CPU执行完指令就检查这个,注意这个检查过程并不是执行一个新的指令、也无须访内存。所以并不需要1/2那么长时间,因为往往是硬件实现的。
|
不要用软件的思维去思考硬件的问题,事实上硬件中,指令执行和中断检查本来就是并行的,只不过在指令执行完成的时候,如果中断发生,硬件进行一次“切换”而已,从逻辑上来说,可以认为“每条指令结束进行一次检查”。
|
每条指令执行的最后一个节拍cpu都会去检查中断引脚信号,如果有就相应中断。并不是像轮询一样占着cpu来检测中断信号,占用时间应该是很小的一部分。