操作系统(五)中断和异常

1.5 中断和异常

   在上节内核态与用户态的转换过程中曾经提到过,操作系统会响应中断信号强制夺回CPU使用权,使用户态转换为内核态。“中断”是操作系统夺回CPU使用权的唯一方式,如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序,其他程序就没有办法再使用CPU,这样的话就不存在并发机制了。一般来说,中断分为两种情况即内中断和外中断。

目录

1.5 中断和异常

1.5.1 内中断

1.5.2 外中断

1.5.3 中断的分类


1.5.1 内中断

  内中断(也称异常)与当前执行的指令有关,中断信号来源于CPU内部。比如,当用户妄图执行特权指令时,CPU便会产生中断,由用户态变为内核态;再比如,当进行除法运算除数为0时同样会发生错误,产生中断。总的来说,就是当前指令是非法的指令,那么一定会引起中断。

  当应用程序想要进行一次系统调用使用内核的服务时,会执行一条陷入(trap)指令,陷入指令会引发一条中断信号,操作系统就会夺回CPU的使用权,也就是说,执行“陷入指令”,意味着应用程序主动地将CPU控制权还给操作系统内核。

1.5.2 外中断

  外中断与当前执行的指令无关,中断信号来源于CPU外部。每次在一条指令结束之后CPU都会检查是否有外中断信号。比如时钟信号,或者I/O设备都可以发出外中断信号。

1.5.3 中断的分类

操作系统(五)中断和异常

    中断的原理:不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。所以,显然中断处理程序一定是内核程序,工作在内核态。