【2021.04.03】中断与异常

什么是中断

  • 中断通常是由CPU外部的输入输出设备(硬件)所触发的,供外部设备通知CPU "有事情需要处理",因此又叫做中断请求(Interrupt Request)。
  • 中断请求的目的是希望CPU暂时停止执行当前正在执行的程序,转去执行中断请求所对应的中断处理例程(中断处理程序在哪里由IDT(中断描述符表)决定)。
  • 80x86由两条中断请求线:
  1. 不可屏蔽中断线,称为NMI(NonMaskable Interrupt)。
  2. 可屏蔽中断线,称为INTR(Interrupt Require)。

不可屏蔽中断如何处理

  1. 不可屏蔽中断产生时,CPU在执行完当前指令后会进入中断处理程序。
  2. 不可屏蔽中断不受EFLAG寄存器中IF位的影响,一旦发生,CPU必须处理。
  3. 不可屏蔽中断处理程序位于IDT的下标为2的位置。

可屏蔽中断

  1. 在硬件级,可屏蔽中断是由一块专门的芯片来管理的,通常称为中断控制器。它负责分配中断资源和管理各个中断源发出的中断请求。
  2. 为了便于标识各个中断请求,中断管理器通常使用IRQ(Interrupt Request)后面加上数字来表示不同的中断。
  3. 比如在Windows中,时钟中断的IRQ编号为0,也就是:IRQ0。

时钟中断

大多数操作系统时钟中断在10-100ms之间,Windows系列为10-20ms。

有了时钟中断,操作系统有机会进行线程切换,但操作系统并不是通过时钟进行的线程切换。

如:写一个死循环,将IF位清零,操作系统仍然可以执行其他代码。

可屏蔽中断如何处理?

  1. 如果自己的程序执行时,不希望CPU去处理这些中断,可以用CLI指令清空EFLAG寄存器中的IF位,用STI指令设置EFLAG寄存器中的IF位。
  2. 硬件中断与IDT(中断描述符表)中的对应关系并非固定不变的,参见:APIC(高级可编程中断控制器)。

异常

异常通常是CPU在执行指令时检测到的某些错误,比如:除0、访问无效页面等。

中断与异常的区别:

  1. 中断来自外部设备,是中断源(如键盘)发起的,CPU是被动的。
  2. 异常来自CPU本身,是CPU主动产生的。
  3. INT N 虽然被称为 "软件中断",但其本质是异常EFLAG的IF位对 INT N 无效

无论是中断还是异常,对于CPU来说都是查表,而且查的都是同一张表。

异常处理

无论是由硬件设备触发的中断请求,还是由CPU产生的异常,处理程序都在IDT(中断描述符表)

常见的异常处理程序:

缺页异常

一旦发生缺页异常,CPU会执行IDT(中断描述符表)中的0xE号中断处理程序,由操作系统来接管。

缺页异常的产生:

1.当PDE/PTE的P=0时

如果某个物理页是有效的,那P位一定是1。但是操作系统设计的时候,物理页可能是紧缺的,如:

现在物理页不够用了,不够用的时候怎么办呢?你的某个线性地址是有效的线性地址,但是你的物理页不够用了,操作系统就会把你物理页中储存的内容放到文件里去。

存到文件里去以后,那当前的物理页就可以给其他程序使用。如果把当前物理页存到文件中后,这个线性地址再次被访问的时候不就出问题了吗?

操作系统是怎么做的呢?操作系统如果决定把你的有效物理页存放到文件中,它会将P位置0,当你再次访问该线性地址,发现P位是0,马上跳入异常处理程序(0xE)。

在0xE指定的中断处理程序中,操作系统首先检查PTE,如果是图1的形式:下标为0、10、11的位置是0,其他的地方都是有值的,那就说明当前的物理页被存储到页面文件中了。

存到哪里了呢?通过PTE的下标为1到4的位置,该编号指明了原来的物理页里面的内容存储到了哪个文件里。这个时候操作系统就会把原来的内容从文件中读取出来并挂一个有效的物理页,把P位改回1,这样访问就可以正常执行了。

但是整个过程对于用户来说是完全透明的,你只知道某个地址能正确读也能正确写,但是这里面有大量的异常在发生。

程序在执行的时候,缺页异常是时时刻刻都在发生的。

2.当PDE/PTE的属性为只读但是程序试图写入时

CPU检测到了,但是CPU没有权限处理,那么该怎么办呢?

CPU发现异常后直接跳转到0xE中断处理程序,仍然是由操作系统的程序来接管。

操作系统的程序检测PTE的操作确实是不合理的,所以就会报一个错误,其反馈到应用层就是经常能看到的0xc0000005错误:内存访问失败。

练习

理解中断或异常发生时,CPU的执行流程:

  1. 分析IDT(中断描述符表)中0x2号(不可屏蔽中断)中断的执行流程。
  2. 分析IDT(中断描述符表)中0x8号(双重错误)中断的执行流程。

猜你喜欢

转载自blog.csdn.net/qq_18120361/article/details/115419042