首页 > 其他分享 >中断

中断

时间:2023-01-15 12:00:10浏览次数:37  
标签:CPL 中断向量 中断 描述符 DPL CPU

操作系统是个死循环,有了中断,CPU才能执行指令工作。

外部中断

外部中断是来自CPU外部的中断,而外部的中断源必须是某个硬件,故而又称为硬件中断。比如网卡接收到数据包,就会通知CPU,CPU再将数据拷贝到内核缓冲区。

由于CPU不能为每一个外部设备设置一个引脚,就提供了两条信号线作为中断信号的公共线路,分别是INTR和NMI。

可屏蔽中断是通过INTR引脚进入CPU的,可屏蔽的意思是此外部设备发出的中断不会让系统宕机,所以CPU可以不予理会,通过eflags的UF位来将这些中断屏蔽。

不可屏蔽中断是通过NMI进入CPU的,表示系统发生了致命性错误,即将宕机。

CPU收到中断后,得知道发生了什么事情才能执行相应的处理办法。这是通过中断向量表或中断描述符表(中断向量表是实模式下的中断处理程序数组,在保护模式下已经被中断描述符表代替)来实现的,首先为每一种中断分配一个中断向量号,中断向量号就是一个整数,它就是中断向量表或中断描述符表中的素引下标,用来索引中断项。中断发起时,相应的中断向量号通过NMI或INTR引脚被传入CPU,中断向量号是中断向量表或中断描述符表里中断项的下标,CPU根据此中断向量号在中断向量表或中断描述符表中检索对应的中断处理程序并去执行。

内部中断

内部中断分为软中断和异常。

软中断就是由软件主动发起的中断,它是主观上的,不是客观上的某种内部错误。

异常是指令执行期间CPU内部产生的错误引起的。

中断描述符表

中断的本质是来了一个中断信号后,调用相应的中断处理程序。为了统一中断管理,把来自外部设备、内存指令的各种中断类型归结为一种管理方式,为每个中断信号分配一个整数,用此整数作为中断的ID,就是所谓的中断向量,用此ID作为中断描述符表中的索引,这样就能找到相应的表项,进而找到对应的中断处理程序。中断向量的作用和选择子类似,都用在描述符表索引一个描述符。在CPU内部有一个中断描述符表寄存器,里面存着中断描述符表的地址。

中断处理过程及保护

CPU外:外部设备的中断由中断代理芯片接收,将处理后的中断向量号发到CPU。

CPU内:CPU执行该中断向量号对应的中断处理程序。

(1)处理器根据中断向量号定位中断门描述符。

中断向量号是中断描述符的索引,当处理器收到一个外部中断向量号后,它用此向量号在中断描述符表中查询对应的中断描述符,然后再去执行该中断描述符中的中断处理程序。由于中断描述符是8个字节所以处理器用中断向量号乘以8后,再与IDTR中的中断描述符表地址相加,所求的地址之和便是该中断向量号对应的中断描述符。

 (2)处理器进行特权级检查。

由于中断是通过中断向量号通知到处理器的,中断向量号只是个整数,其中并没有RPL,所以在对中断引起的特权级转移做特权级检查中,并不涉及到RPL。中断门的特权检查同调用门类似,对于软件主动发起的软中断,当前特权级CPL必须在门描述符DPL和门中目标代码段DPL之间。这是为了防止位于3特权级下的用户程序主动调用某些只为内核服务的例程。

(a)如果是由软中断intn、int3和into引发的中断,这些是用户进程中主动发起的中断,由用户代码控制,处理器要检查当前特权级CPL和门描述符DPL,这是检查进门的特权下限,如果CPL权限大于等于DPL,即数值上CPL≤门描述符DPL,特权级“门槛”检查通过,进入下一步的“门框”检查。否则处理器抛出异常。

(b)这一步检査特权级的上限(门框):处理器要检查当前特权级CPL和门描述符中所记录的选择子对应的目标代码段DPL,如果CPL权限小于目标代码段DP.即数值上CPL>且标代码段DPL,检查通过。否则CPL若大于等于且标代码段DPL,处理器将引发异常,也就是说,除了用返回指令从高特权级返回,特权转移只能发生在由低向高。

若中断是由外部设备和异常引起的,只直接检查CPL和目标代码段的DPL,和上面的步骤b)是样的,要求CPL权限小于目标代码段DPL,即数值上CPL>目标代码段DPL,否则处理器引发异常。

(3)执行中断处理程序

特权级检查通过后,将门描述符目标代码段选择子加载到代码段寄存器CS中,把门描述符中中断处理程序的偏移地址加载到EIP,开始执行中断处理程序。

 

标签:CPL,中断向量,中断,描述符,DPL,CPU
From: https://www.cnblogs.com/LCAB/p/17052028.html

相关文章

  • STM32F407 HardFault_Handler 中断输出初步定位越界问题
    1、测试环境:MDK+STM32F4072、汇编重写 HardFault_Handler 中断/*硬件错误中断的回调*/voidHardFault_CallBack_MSP(void){unsignedintMSP=__get_MSP......
  • 计算机操作系统第三天(启动中断异常和系统调用 p9~p10)
    视频对外设是I/O和中断来控制对应用程序是系统调用和异常来控制为什么应用系统要通过操作系统来访问外设?异步表示不知道什么时候发生。同步有一个确切......
  • STM32HAL库定时器中断关闭的方法
    本文可以用于解决这个问题:定时器中断上电后莫名其妙开启,或者首先触发一次。STM32HAL库在定时器初始化并开启以后,也是会默认开启中断。如不需要默认就开启中断可以用一下代......
  • HAL库教程4:外部中断
    外部中断机制  本章我们仍然是通过按键来控制LED,只不过实现方式由轮询变为了外部中断。为什么需要外部中断?为了给CPU减轻负担。  举个例子  比如你今天有个快递,快递......
  • STM32 - 中断
    1.中断定义(Event)中断(Interrupt):指当出现需要时,CPU暂时暂停当前程序的执行,转而执行处理新情况的程序的处理过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理......
  • DMA请求与DMA中断
    DMA请求与DMA中断DMA请求与DMA中断也是曾混淆的一点。当I/O设备准备好数据之后,I/O设备向DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求,时常将这两个过程统称为DMA......
  • 中断
    中断一、什么是中断1、中断的作用和意义2、STM32GPIO外部中断简图二、NVIC1、NVIC基本概念Nestedvectoredinterruptcontroller,嵌套向量中断控制器,属于内核(M3/......
  • Windows Server 由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务
    虚拟机内服务器  由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系。WindowsServer2012R2Standard      尝试使用虚拟......
  • [UnityAI]行为树的中断机制
    参考链接:https://www.cnblogs.com/01zxs/p/9863715.htmlhttps://blog.csdn.net/AcmHonor/article/details/123234763https://blog.csdn.net/u012632851/article/details......
  • ESP32中断的使用
    定时器中断硬件中断attachInterrupt(pin,ISR,mode);pin管脚号ISR中断处理函数mode触发中断的模式,可以使用的值有。LOW低电平触发CHANGE管脚电平变化......