中断与中断处理:控制器详解
1. 中断描述符表与处理流程
在计算机系统里,中断描述符表(IDT)起着关键作用。它把每个向量号与处理相关事件的指令描述符关联起来。由于向量号仅有 256 个,所以 IDT 最多包含 256 个描述符,不过实际上可能少于这个数量,只需要为实际使用的向量号设置条目即可。
当计算出的向量号在表内时,会加载存储在对应内存位置的 8 字节描述符,并依据描述符内容执行相应操作;若向量号过大,就会产生异常。
Intel 处理器的中断处理过程较为复杂。简单来说,当响应异常或中断时,处理器会先把被中断程序或任务的当前状态(状态标志寄存器和程序计数器)保存到栈中。IDT 或中断向量表(IVT)中的每个条目都存有中断处理程序的起始地址,处理器会从 IDT 或 IVT 读取该地址到程序计数器,接着启动处理程序的执行。处理程序使用 IRET 指令返回,它和普通程序返回用的 RET 指令类似,只是会恢复之前保存的状态寄存器标志。
2. 多外设中断问题及解决方案
外设设备的中断线需连接到 CPU 的中断输入信号,这样外设就能中断 CPU 并引起其注意。但在实际计算机系统中,往往有多个甚至数十个外设想要中断 CPU,若为每个外设都给 CPU 添加一个中断输入引脚,会让 CPU 接口变得复杂,还增加出错概率。
- 轮询方式 :一种解决办法是让所有外设共享 CPU 上的一个电平敏感中断输入引脚(IRQ)。一旦中断被触发,CPU 会跳转到与该 IRQ 引脚关联的中断处理程序。此处理程序会轮询每个 I/O 外设,通过读取外设状态寄存器中的中断待处理位,来确定是哪个设备触发了中断。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



