中断和异常

来源:互联网 发布:linux cp 两个文件 编辑:程序博客网 时间:2024/05/22 13:47

采用中断原因:CPU速度远远高于外设采用轮询的机制太浪费CPU,因此需要一种机制,当外设需要CPU处理外设相关事件的时候能够主动通知操作系统,即打断操作系统和应用程序的正常执行,处理相关外设,然后在处理完成后恢复原来的执行状态。在操作系统中,这钟机智成为中断机制。该机制是实现进程/线程强栈是调度的一个重要基石。

三种特殊的中断事件:(1)异步中断(asynchronous interrupt)或外部中断:简称中断。由外部设备引起的外部事件如I/O中断、时钟中断、控制台中断等是异步产生的(即产生的时刻不确定),与CPU的执行无关。(2)内部中断:也称异常(exception),在CPU执行指令期间检测到不正常的或非法的条件(如除零错、地址访问越界)所引起的内部事件称作同步中断(synchronous interrupt)。(3)陷入中断(trap interrupt):也称软中断(soft interrupt),在程序中使用请求系统服务的系统调用而引发的事件。系统调用(system call)简称trap。

(1)中断描述符表(Interrupt Descriptor Table):LIDT(Load IDT Register)指令和SIDT(Store IDT Register)指令

(2)IDT gate descriptors:Interrupt/Exceptions 应该使用Interrupt Gate和Trap Gate。区别:调用Interrupt Gate时,Interrupt会被CPU自动禁止;而调用Trap Gate时,CPU则不会禁止或打开中断,保留原来的样子。

注:自动禁止:CPU跳转到interrupt gate里的地址时,在将EFLAGS保存到栈上之后,清除EFLAGSdeIF位,以避免重复触发中断。而Trap Gate不会禁止中断,因不会出现嵌套系统调用。

在IDT中,3种类型的Descriptor:(1)Task-gate descriptor(没有用到)(2)Interrupt-gate descriptor(中断方式)(3)Trap-gate descriptor(系统调用)

原创粉丝点击