操作系统笔记(四)中断
ctime:2020-04-30 13:33:34 +0900|1588221214
标签(空格分隔): 技术 操作系统
练习6
- 中断描述符表(也可简称为保护模式下的中断向量表)中一个表项占多少字节?其中哪几位代表中断处理代码的入口?
- 8个字节
- 16-31位表示段选择子,0-15位为偏移的低16位,高16位位于中断描述符的最高16位(48-64位)
8086(80386)的中断向量表并不像ARM的中断向量表放在地址0处,而是位置可变。当建好中断向量表之后,
通过lidt指令,将中断向量表的地址给IDTR寄存器,这样当CPU发生中断时,他会从这个IDTR寄存器获取到中断向量表的位置,
然后在里面找相应的中断服务函数的地址。
与gdt(全局内存分段描述表)一样,传给lidt除了要给中断向量表的地址外,还要给内存界限。因此也是32+16=48位。
建立idt的函数:
#define SETGATE(gate, istrap, sel, off, dpl) { \
(gate).gd_off_15_0 = (uint32_t)(off) & 0xffff; \
(gate).gd_ss