操作系统:中断和异常

一、中断的类型

内中断(异常):与当前CPU的执行的指令有关,中断信号来自CPU内部

外中断:与当前CPU的执行的指令无关,中断信号来自CPU外部 

(注:在大部分教材中,“中断”是狭义的中断,指外中断;而内中断则称为异常)

 

内中断分类:陷入中断、故障中断、异常中断

陷入中断:由陷入指令(非特权指令)引发,是应用程序故意引起。比如应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令,该指令会引发一个中断信号。执行陷入指令意味着应用程序主动放弃CPU的使用权,将CPU的使用权交给操作系统内核。 “系统调用”就是通过陷入指令实现的。

 

故障中断:由错误条件引起,可能被内核程序修复,内核程序修复后会把CPU使用权交还给应用程序,使应用程序继续执行。比如CPU执行除法指令发现除数是0,该指令是非法的。比如缺页故障。

 

异常中断:由致命错误引起,内核程序无法修复,因此一般不在将CPU的使用权交还给引发该中断信号的应用程序,而是直接终止该应用程序的运行。比如非法使用特权指令。

 

外中断的分类:时钟中断、I/O中断等

 

时钟中断:实现并发运行。由时钟部件发出中断信号,时钟部件每隔一个时间片(假设为50ms)就会给CPU发送一个时钟中断信号。起初,应用程序A在CPU上运行,执行一系列的指令,当时钟部件检测到应用程序A已经运行了50ms时,会向CPU发出中断信号。CPU检测到中断信号转化为内核态,由处理时钟中断信号的内核程序上CPU运行,处理完成后转换为用户态,将CPU的使用权交给应用程序B。应用程序B上CPU运行,执行一系列的指令,当时钟部件又检测到应用程序B已经运行了50ms,又会向CPU发出时钟中断信号……如此往复实现程序的并发运行。

 

I/O中断:由输入/输出设备发出中断信号。比如打印机在工作时,打印任务执行完毕后,回向CPU发出中断信号,CPU检测到中断信号转换为内核态,由相对应的内核程序去处理该中断信号

 

补充:CPU每执行一条指令都是例行去检查是否有中断信号

二、中断的作用

CPU上会运行两种程序——应用程序和内核程序。在合适的时间内,内核程序会主动让出CPU的使用权交给应用程序,但是应用程序无法主动让出CPU的使用权交给内核程序,只能通过中断来实现。中断是操作系统内核夺回CPU使用权的唯一途径。

如果没有中断,那么一旦应用程序上CPU运行,那么CPU就会一直运行这个程序,并发运行程序又从何而来?因此中断是实现并发运行必不可少的。

三、中断机制的基本原理

不同的中断信号需要由不同的中断处理程序(内核程序)去处理。当CPU检测到中断信号时,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中存放的位置。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南林yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值