中断、异常 、故障、陷阱与中止他妈的到底是什么

interrupts :中断    trap:陷阱   abort:中止   faults : 故障  exception:异常

英特尔 x86 定义了两个重叠的类别:
  • 矢量事件 vectored events (中断异常
  • 异常类 exception classes (故障陷阱中止)。

向量事件 vectored events 

主要作用:
向量化事件(中断和异常)导致处理器在保存了处理器的大部分状态(足够让执行可以从该点继续执行)之后,跳转到中断处理程序。


异常和中断有一个称为向量的 ID(向量号),用于确定处理器跳转到哪个中断处理程序。中断描述符表中描述了中断处理程序。

  1. 中断 interrupts
    是基于 CPU 外部外部硬件事件的程序控制中断(例如:按键盘上的键或计时器上的超时 芯片)因此称为异步指令
    中断在程序执行期间随机发生,以响应硬件信号。系统硬件使用中断来处理处理器外部的事件,例如对服务外围设备的请求。软件也可以通过执行INT n指令来产生中断。

  2. 异常 interrupts:

        当处理器在执行指令时检测到错误条件(如除零)时,就会发生异常。处理器会检测各种          错误条件,包括违反保护机制、缺页错误和内部机器错误。

异常类 Exception Classifications:

根据报告异常的方式,以及导致异常的指令能否在不丢失程序或任务连续性的情况下重新启动,异常被分为故障、陷阱或中止。
总结:陷阱增加指令指针,错误不增加,终止电脑会发生`爆炸`(开玩笑)。
故障 Fault:
故障是一种通常可以纠正的异常,一旦纠正,就可以重新启动程序,而不会失去连续性。当故障被报告时,处理器将机器状态恢复到开始执行故障指令之前的状态。
故障处理程序的返回地址(CS和EIP寄存器保存的内容)指向故障指令而不是指向故障指令之后的指令。

陷阱 Trap:
        陷阱是一种特殊的中断,通常称为软件中断是由当前指令的执行引起的,因此它们被               称 为同步事件,并期望将控制权转移到特殊的处理程序例程。(例如:80x86 INT 指               令就是一个很好的例子)
         陷阱是在执行陷阱指令之后立即报告的异常。陷阱允许继续执行程序或任务而不会失             去程序的连续性。陷阱处理程序的返回地址指向在陷阱指令之后要执行的指令

中止 abort:

abort是一种异常,它不总是报告导致异常的指令的精确位置,也不允许重新启动导致异常的程序或任务。中止用于报告严重的错误,例如硬件错误和系统表中不一致或非法的值。

page fault    #PF
页面错误通常是可恢复的。应用程序的地址空间的一部分可能已经从ram交换到磁盘。当应用程序试图访问被换出的内存时,它将触发页面错误。内核可以将这些内存从磁盘拉到ram,并将控制权交还给应用程序。应用程序将继续在它停止的地方(在访问交换出的内存的错误指令处),但是这次内存访问应该成功而不会出现错误。


illegal-instruction fault #UD
非法指令错误处理程序 必须在查看 错误指令 是否可以处理之后,手动增加返回地址以获得所需的类似陷阱的行为。z在X86中 #UD是一个“Fault”,而不是一个“trap”。(处理程序需要一个指向错误指令的指针。找出是哪条指令)


草泥马的搞懂没有!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值