所谓中断是指CPU在正常执行程序的过程中,由于内部/外部事件的触发或由程序的预先安排,引起CPU暂时中断当前正在运行的程序,而转去执行为内部/外部事件或程序预先安排的事件的服务子程序,待中断服务子程序执行完毕后,CPU再返回到被暂时中断的程序处(断点)继续执行原来的程序,这一过程成为中断。

中断向量:中断的地址的变量;

中断向量表:中断类型号与相应中断源的中断处理程序入口地址之间的连接表;

中断服务程序:发送中断时所执行的中断代码

中断机制

中断机制是现代计算机系统中的基本机制之一,它在系统中起着通信网络的作用,以协调系统对各种外部事件的响应和处理,中断是实现多道程序设计的必要条件,中断是CPU 对系统发生的某个事件作出的一种反应。引起中断的事件称为中断源。中断源向CPU 提出处理的请求称为中断请求。发生中断时被打断程序的暂停点称为断点。CPU暂停现行程序而转为响应中断请求的过程称为中断响应。处理中断源的程序称为中断处理程序。CPU执行有关的中断处理程序称为中断处理。而返回断点的过程称为中断返回。中断的实现由软件和硬件综合完成,硬件部分叫做硬件装置,软件部分称为软件处理程序。

众所周知,处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后专门等待回应的办法,显然降低内核效率。

既然硬件的响应这么慢,那么内核就应该在此期间处理其他事务,等到硬件真正完成了请求的操作之后,再回过头来对它进行处理。想要实现这种功能,轮询(polling)可能会是一种解决办法。可以让内核定期对设备的状态进行查询,然后做出相应的处理。不过这种方法很可能会让那个内核做不少无用功,因为无论硬件设备是正在忙碌着完成任务还是已经大功告成,轮询总会周期性的重复执行。更好的办法是由我们来提供一种机制,让硬件在需要的时候再向内核发出信号(变内核主动为硬件主动),这就是中断机制。

中断使得硬件得以与处理器进行通信。举个例子,在你敲打键盘的时候,键盘控制器(控制键盘的硬件设备)会发送一个中断,通知操作系统有键按下。中断本质是一种特殊的电信号,由硬件设备发向处理器。处理器接受到中断后,会马上向操作系统反映此信号的到来,然后就由os负责处理这些新到来的数据。硬件设备生成中断的时候并不考虑与处理器的时钟同步——换句话说就是中断随时可以产生。因此,内核随时可能因为新到来的中断而被打断。

不同的设备对应的中断不同,而每个中断都通过一个惟一的数字标识。因此,来自键盘的中断就有别于来自硬盘的中断,从而使得操作系统能够对中断进行区分,并知道哪个硬件设备产生了哪个中断。这样,操作系统才能给不同的中断提供不同的中断处理程序。

在它执行程序的时候,如果有另外的事件发生(比如用户又打开了一个程序)那么这时候就需要由计算机系统的中断机制来处理了。

中断机制包括硬件的中断装置和操作系统的中断处理服务程序。

让硬件在需要的时候再向内核发出信号。

早期的微机系统中将由硬件产生的中断标识码(中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址)称为中断向量

中断向量,中断向量表 ,中断服务函数相关推荐

  1. 中断服务函数能不能带形参和返回值

    从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器.如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚.处理器于是立即停止自己正 ...

  2. 嵌入式中断服务函数的一些特点

    --------------------------------------------- -- 时间:2019-02-20 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...

  3. STM32 关于外部中断线、中断源和中断服务函数的问题

    STM32 关于外部中断线.中断源和中断服务函数的问题 中断线问题: 上图可以看出,PA0.PB0...PG0共用的EXTI0中断线,PA1.PB1...PG1共用的EXTI1中断线,也就是 编程里面 ...

  4. 中断函数 printf_嵌入式中断服务函数的一些特点

    中断是嵌入式系统中重要的组成部分,但是在标准C中不包含中断.许多编译开发商在标准C上增加了对中断的支持,提供新的关键字用于标示中断服务程序 (ISR),类似于__interrupt.#program ...

  5. stm32外部中断问题(每次stm32进行系统复位按键控制NRST=0,程序立马进入中断服务函数)

    rf射频数据收发芯片的一个数据接收指示引脚连接stm32的一个gpio口,设置为中断口.当rf接收到数据的时候,数据接收指示引脚由高电平变为低电平,所以中断配置里面配置的是IPU,下降沿触发.系统复位 ...

  6. 串行口中断服务函数的触发条件-------TI/RI 触发

    串行口中断服务函数和其他中断本质上是一样的,达到特定的条件,向CPU申请中断,进入中断服务函数: 我特意在郭天祥老师的书上找到了一句话:当数据被写入SBUF寄存器后,单片机自动开始从起始位发送数据,发 ...

  7. 正点原子STM32-串口中断服务函数USART1_IRQHandler关于USART_RX_STA的学习笔记

    目录 USART1_IRQHandler 中断服务函数代码 介绍 函数USART_GetITStatus 每个状态描述 USART_RX_STA 接收状态标记的思考 USART1_IRQHandler ...

  8. PendSV中断服务函数

    之前在系统滴答定时器中断服务函数中调用API函数xPortSysTickHandler(),xPortSysTickHandler()函数中通过向中断和状态寄存器的bit28写入1来启动PendSV中 ...

  9. 中断解读以及中断服务函数

    文章目录 1.硬中断和软中断 2.中断服务程序(ISR) 3.面试题 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器.如果中断的线是激活的,中 ...

  10. 嵌入式里的中断解读以及中断服务函数

    不要年纪轻轻,就觉得自己进入了人生低谷,其实,后来你会发现你还有很大的下降空间. 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器.如果中断的线 ...

最新文章

  1. python安装numpy模块-python的numpy模块安装不成功简单解决方法总结
  2. win10 VS2010 VS studio 生成程序默认管理员运行 此任务要求应用程序具有提升的权限
  3. HTML(六)------ CSS
  4. 8g内存一般占用多少_手记|如何设置虚拟内存
  5. MYSQL 4种插入数据的方式比较
  6. asp.net onclick与onclientclick的区别
  7. Appium实现的技巧
  8. SVN下载以及中文包安装
  9. pytorch训练过程中内存一直慢慢增长直到爆
  10. java倒叙遍历list
  11. Python数据处理——pandas
  12. Java泛型方法与普通成员方法以及案例说明(五)
  13. 基恩士CSV点云文件转PCD文件 PYTHON版
  14. php 商品模块添加商品属性,添加新商品
  15. Tomcat启动问题汇总
  16. 计算机重启恢复系统怎么操作,电脑只要关机重启系统就会自动还原?-电脑怎么系统还原...
  17. 医疗建筑智能化工程项目能耗监测系统的研究与应用
  18. 进度猫教你如何做出高效可行的项目计划
  19. 商业模式画布包含哪些东西
  20. 详解DNS 查询原理

热门文章

  1. Spring学习笔记(五):JDBCTemplate+事务管理
  2. mesh和wifi中继的区别_Mesh路由和无线中继的差距在哪里?谁才是更好的选择?
  3. PyTorch图神经网络实践(五)链路预测
  4. 大数据在线分析处理和常用工具
  5. 拒绝成为肉鸡 教你几招让黑客永远抓不到你
  6. 如何做一个基于微信酒店预订小程序系统毕业设计毕设作品
  7. 解决pytest运行时报错ModuleNotFoundError
  8. nba全明星java_2018nba全明星阵容
  9. strip,lstrip,rstrip,sprit(字符串处理)
  10. 树莓派php minicom,用DHT11实践树莓派与Arduino串口通信 | 树莓派实验室