问题
中断与对应的服务程序间如何建立关联?在代码层面如何进行转移?
实模式下的中断处理
使用中断向量表映射不同中断与中断服务程序
中断向量表 (Interrupt Vector Table)
- 起始于物理地址0,长度为1KB
- 每个单元4字节,连续256个单元
- 每个单元存放中断服务程序的入口地址
中断向量表 (IVT)
处理器接收到中断信号时,能够询问到中断向量 (中断类型号);通过中断向量查找IVT,获取ISR入口地址;之后,跳转执行 (类似函数调用)。
中断响应与处理
思考
实模式下的中断向量表 (IVT) 和中断服务程序 (ISR) 需要操作系统内核来建立吗?
你不知道的故事
x86系列处理器上电后直接进入实模式
硬件设计将ROM中的BIOS拷贝到内存中
BIOS代码的入口地址为0xFFFF0
硬件将cs设置为0xFFFF,ip设置为0x0000
BIOS从0xFFFF0处开始执行
检测计算机系统的硬件,并做一系列简单的初始化
在内存中建立中断向量表 (IVT)和中断服务程序 (ISR)