计算机基础知识

操作系统拾遗--中断相关

2019-02-25  本文已影响0人  FrankerSung

0. 概念

中断:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
其中引起中断的原因或者说发出中断请求的来源叫做中断源

软件中断:并不是真正的中断,它们只是可被调用执行的一般程序。例如:ROM BIOS中的各种外部设备管理中断服务程序(键盘管理中断、显示器管理中断、打印机管理 中断等,)以及DOS的系统功能调用(INT 21H)等都是软件中断。

硬件中断之外部中断[可屏蔽]:一般是指由计算机外设发出的中断请求,如:键盘、打印机、定时器等。外部中断是可屏蔽的中断,也就是说,利用中断控制器可以屏蔽这些外部设备的中断请求。

硬件中断之内部中断[不可屏蔽]:是指因硬件出错(如突然掉电、奇偶校验错等)或运算出错(除数为零、运算溢出、单步中断等)所引起的中断。内部中断是不可屏蔽的中断。

非屏蔽中断

时钟中断:Clock or timer interrupts are interrupts from your timers present on your board. These timers are configured during board initialization where you can define the interrupt period.

  1. Does it occur every clock tick?
    Timers do not depend on tick. Both are same. After each interrupt or tick a variable called jiffies is incremented. This variable shows number of ticks or interrupts from system boot.
  2. Does it occur every second?
    Timers are configurable. You can configure to generate interrupt after 1 second or 1 millisecond, etc.
  3. Is it some kind of an alarm that has to be triggered?
    Alarms use timer devices too. But ticks or interrupts and alarm are different. Alarm is started for some task but ticks are recorded from boot up and not modified manually.

1. 分类

根据中断源的不同,可以把中断分为 硬件中断 和 软件中断。
硬件中断可以分为外部中断和内部中断


2. 中断机制?

2.1. 中断请求

中断请求是由中断源向CPU发出中断请求信号。外部设备发出中断请求信号要具备以下两个条件:

  1. 外部设备的工作已经告一段落。例如输入设备只有在启动后,将要输入的数据送到接口电路的数据寄存器(即准备好要输入的数据)之后,才可以向CPU发出中断请求。
  2. 系统允许该外设发出中断请求。如果系统不允许该外设发出中断请求,可以将这个外设的请求屏蔽。当这个外设中断请求被屏蔽,虽然这个外设准备工作已经完成,也不能发出中断请求。
2.2. 中断响应、处理和返回

当满足了中断的条件后,CPU就会响应中断,转入中断程序处理。具体的工作过程如下:

  1. 关闭中断信号接收器
  2. 保存现场(context)
  3. 给出中断入口,转入相应的中断服务程序
  4. 处理完成,返回并恢复现场(context)
  5. 开启中断信号接收器
2.3.中断排队和中断判优先级
  1. 中断申请是随机的,有时会出现多个中断源同时提出中断申请。
  2. CPU每次只能响应一个中断源的请求。
  3. CPU不可能对所有中断请求一视同仁,它会根据各中断源工作性质的轻重缓急,预先安排一个优先级顺序。当多个中断源同时申请中断时,即按此优先级顺序进行排队,等候CPU处理。

3. 中断与异常

对CPU来说是 和当前CPU所执行的指令的关系 CPU接下来的事情 程序员和用户的态度
中断 被动的 异步的 没关系 跳转到对应的ISR 希望有对应的中断,以使得CPU可以响应对应的中断,执行对应的ISR
异常 被动的 同步的 有关系,因为就是当前指令执行出问题,才有的异常 跳转到对应的异常处理 不希望出现异常,如果出现了,那往往是指令执行出现某些错误了
陷阱 主动的 同步的 有关系,就是执行当前软中断指令,才进入的软中断 执行对应的软中断处理函数 对于想要实现调试功能的程序员,有需要此陷阱的必要,其他人不用关心此点

参考
https://blog.csdn.net/linkedin_35878439/article/details/79013742
https://www.crifan.com/files/doc/docbook/interrupt_related/release/htmls/interrupt_exception_trap_relation.html

上一篇下一篇

猜你喜欢

热点阅读