linux中断和异常的区别

在这里插入图片描述
中断是统称,但作为与异常并列的概念时,是另一种含义,即异步中断。异步中断是硬中断,由硬件在任何时间随机触发,键盘、鼠标等都属于异步中断。

异步中断分为可屏蔽硬件中断和不可屏蔽中断,不可屏蔽中断源一旦提出请求,cpu必须无条件响应,而对于可屏蔽中断源的请求,cpu可以响应,也可以不响应。

cpu一般设置两根中断请求输入线:可屏蔽中断请求INTR(Interrupt Require)和不可屏蔽中断请求NMI(Nonmaskable Interrupt)。对于可屏蔽中断,除了受本身的屏蔽位的控制外,还都要受一个总的控制,即CPU标志寄存器中的中断允许标志位IF(Interrupt Flag)的控制,IF位为1,可以得到CPU的响应,否则,得不到响应。

典型的非屏蔽中断源的例子是电源掉电,一旦出现,必须立即无条件地响应,否则进行其他任何工作都是没有意义的。典型的可屏蔽中断源的例子是打印机中断,CPU对打印机中断请求的响应可以快一些,也可以慢一些。

异常属于中断的一种,又称为同步中断。同步中断通常是由CPU执行的指令引起的,例如执行一个系统调用。这种中断是可预测的,与程序的执行流程紧密相关,通常在当前执行的指令完成后立即进行。这意味着,当CPU执行到特定的指令时,会触发中断处理程序。一旦CPU执行完触发中断的那个指令,就会立即进入中断处理程序,而不会等到其他指令执行完。

例如系统调用(如读取文件),当程序执行到这个系统调用指令时,它就会触发一个同步中断。这个中断告诉操作系统:“我需要执行一个系统级别的操作。”操作系统随后会处理这个请求,比如打开文件、读取数据等。一旦这个系统调用完成,CPU会从中断处理程序返回到原来的程序中,继续执行下一条指令。

异常分为错误,陷阱,和终止三种情况:

  • 错误:错误是一种通常可以能够被修正的异常,不一定会导致程序立即停止,有时候可以通过错误处理机制来纠正或忽略错误,使程序继续运行。错误处理例程的返回地址指向产生错误的指令,而不是错误指令之后的的那条指令。如页错误。
  • 陷阱:当引起陷阱的指令发生时,马上产生该异常。陷阱允许程序不失去连续性的继续执行。陷阱处理例程的返回地址指向引起陷阱的指令的下一条指令(与错误本质上的区别)。陷阱通常用于实现系统调用,如文件操作、进程控制等。
  • 终止:终止是指程序因为遇到严重问题而无法继续执行,必须立即停止。它并不总是报告产生异常的指令的确定位置,也不允许引起终止的进程或任务重新执行。例如,当一个程序试图访问一个它没有权限访问的内存区域时,操作系统可能会终止该程序以防止潜在的安全问题。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值