您的位置:首页 > 其它

操作系统——中断机制(trap, interrupts)

2016-07-28 21:22 309 查看
中断描述符表(Interrupt Descriptor Table,IDT)将每个异常或中断向量分别与它们的处理过程联系起来,IDT也是由8字节长描述符组成的一个数组。

IDT表可以存放在线性地址空间的任何地址,处理器使用IDTR寄存器来定位IDT表的位置。

IDTR寄存器中含有32位的基地址和16位的长度值。

LIDT和SIDT指令分别用于加载和保存IDTR寄存器的内容。

LIDT指令用于把内存中的限长值和基地址操作数加载到IDTR寄存器中。该指令仅能由当前特权级CPL是0的代码执行,通常被用于创建IDT时的操作

系统初始化代码中。

SIDT指令用于把IDTR中的基地址和限长内容复制到内存中。该指令可在任何特权

级上执行。

The x86 allows up to 256 different interrupt or exception entry points into the kernel, each with a different interrupt vector.A vector is a number
between 0 and 255. An interrupt's vector is determined by the source of the interrupt:
different devices, error conditions, and application requests to the kernel generate interrupts with different vectors. The
CPU uses the vector as an index into the processor's interrupt descriptor table (IDT
), which the kernel sets up in kernel-private memory, much like the GDT. From the appropriate entry in this table the processor loads:
the value to load into the instruction pointer (EIP) register, pointing to the kernel code designated to handle that type of exception.
the value to load into the code segment (CS) register, which includes in bits 0-1 the privilege level at which the exception handler is to run. 

中断向量和中断向量表

中断向量:中断处理程序的入口地址。其实

中断向量表:中断处理程序的入口地址的列表

中断描述符表和中断向量表的区别联系

在保护模式下,中断向量表中的表项由8个字节组成,根据中断号可以索引其在中断向量表中的位置,在该模式下,中断向量表也可称为中断描述符表IDT.

表中的每个entry称为一个门描述(gate descriptor) ,通过它进入相应的处理程序。

中断门(interrupt gate)分类:

中断门(Interrupt gate)

其类型码为110,中断门包含了一个中断或异常处理程序所在段的选择符和段内偏移量。当控制权通过中断门进入中断处理程序时,处理器清IF标志,即关中断,以避免嵌套中断的发生。中断门中的DPL(Descriptor
Privilege Level)为0,因此,用户态的进程不能访问Intel的中断门。所有的中断处理程序都由中断门激活,并全部限制在内核态。

· 陷阱门(Trap gate)

其类型码为111,与中断门类似,其唯一的区别是,控制权通过陷阱门进入处理程序时维持IF标志位不变,也就是说,不关中断。

· 系统门(System gate)

这是Linux内核特别设置的,用来让用户态的进程访问Intel的陷阱门,因此,门描述符的DPL为3。通过系统门来激活4个Linux异常处理程序,它们的向量是3、4、5及128,也就是说,在用户态下,可以使用int3、into、bound
及int0x80四条汇编指令

最后,在保护模式下,中断描述符表在内存的位置不再限于从地址0开始的地方,而是可以放在内存的任何地方。为此,CPU中增设了一个中断描述符表寄存器IDTR,用来存放中断描述符表在内存的起始地址。中断描述符表寄存器IDTR是一个48位的寄存器,其低16位保存中断描述符表的大小,高32位保存IDT的基址.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: