【中断机制】什么是中断?使用中断的原因、注意事项

news2024/9/22 21:31:21

目录

一、为什么需要中断

二、什么是中断

1、中断的概念

2、中断的分类

3、中断的处理流程

三、中断处理程序要少用延时的原因


一、为什么需要中断

以网卡为例,CPU 如果要从网卡获取数据,不可能时时盯着网卡啥时候会有数据。当网卡收到数据时,给CPU 发送一个中断请求信号,请求占用CPU,进行数据读取的操作。

如此,CPU 就没必要傻傻的一直等着数据准备就绪,在数据到来之前,CPU可以着手处理其他事情。

二、什么是中断

1、中断的概念

中断是指CPU对系统发生某个时间做出的一种反应。(是外部设备向处理器发起的请求事件)中断发生后,CPU 不会立即执行响应,而是在当前指令执行完以后转入“ 中断处理流程 ”。此时 CPU 会跳转到中断处理程序去处理这个中断,处理完毕后再回到原来位置的下一个位置

 

2、中断的分类

① 硬中断

硬中断由硬件产生,每个设备或设备集都对应着一个中断向量号。比如下面的  GPIO1的 0~15 引脚产生的中断对应的中断号都是 66。在中断服务函数中我们需要自己辨别具体是哪个引脚产生了中断。

最典型的硬中断就是网卡收到消息,就会向CPU发送中断请求通知CPU处理数据,这里的中断请求就是 “ 硬中断 ”。硬中断可以直接打断 CPU,类似于你打电话的时候,电话线断了。

  1. 发生硬件中断时,外设给CPU发送中断请求
  2. 根据中断向量号查询中断向量表
  3. 协调设备驱动处理外部设备的中断请求

② 软中断

软件中断由CPU执行中断产生指令时产生,是由程序预先实现好的,并非随机的,如系统调用。当程序执行到系统调用这一行时,就会触发软中断。软中断不会直接打断 CPU,类似于你在打电话,有人敲门,你打电话这一操作不会被立马中断。

  • 发生系统调用时,中断向量表查询系统调用表,随后执行对应的系统调用程序
  • 发生异常时,查询中断向量表跳转到异常处理程序

3、中断的处理流程

第一步,保存当前进程的 CPU 运行环境。为了中断处理结束以后,能够回来继续执行最初的工作,CPU 会将当前进程的上下文压入内核栈或者中断栈中。

第二步

  • 如果是软中断,直接查询中断向量表转入中断处理程序;
  • 如果是硬中断,设备收到CPU返回的确认信号后,取消发送的中断请求,转入中断处理程序

第三步,执行中断处理程序

第四步,恢复CPU现场,退出当前中断。后续可能是直接返回原进程,也有可能是处理更高优先级的中断。

三、中断处理程序要少用延时的原因

中断处理的要求是即时处理,尽快退出。如果在中断中使用延时函数或者使用IO阻塞函数,会影响到系统的实时性。如果下次中断来临,延时或者阻塞还没结束,那么就永远在中断里死循环了。

因此,对于中断处理程序的要求是:

  • 短小精悍,不要处理过多任务
  • 不使用延时函数或者IO阻塞的函数

参考文章:

(操作系统)中断机制_蜂蜜小熊的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/839901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

炼钢工艺流程(2)

1. 轧制单元 更换前后两个工作辊之间的轧制对象称为轧制单元,对应一个轧制计划。两个 支撑辊之间的轧制对象是由多个轧制单元组成,称为轧制单元组,对应多个轧制计 划。 轧制单元的结构 每个计划开始的部分板坯按照宽度非减的方向排列来加热轧…

Linux中安装Node

安装 先从 官方网站 下载安装包,有时 node 版本太新会导致失败,详见下方的常见问题第2点 cd /home // 创建目录,将下载好的 node 安装包上传到此目录 mkdir Download mkdir /usr/local/lib/node解压 // 解压,前面是文件当前路径…

jenkins pipeline项目

回到目录 将练习jenkins使用pipeline项目,结合k8s发布一个简单的springboot项目 前提:jenkins的环境和k8s环境都已经安装完成,提前准备了gitlab和一个简单的springboot项目 创建一个流水线项目 流水线中选择git,并选择gitlab的…

运放电路之比较器的分析笔记

一、比较器 比较器分为同相比较器和反相比较器。 反相比较器电路如下: V11为固定值,这里设定的是2.5V,接到了运放的输入正(V); V10为输入值,值可变,接到了运放的输入负(V…

Python 开发工具 Pycharm —— 使用技巧Lv.2

pydoc是python自带的一个文档生成工具,使用pydoc可以很方便的查看类和方法结构 本文主要介绍:1.查看文档的方法、2.html文档说明、3.注释方法、 一、查看文档的方法 **方法1:**启动本地服务,在web上查看文档 命令【python3 -m…

人工智能编程软件 python,python人工智能编程入门

大家好,给大家分享一下人工智能python编程具体做什么,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 有不少同学学习 Python 的原因是对人工智能感兴趣,有志于从事相关行业。今天我们来聊聊这个方向所需要的一些技能…

一条sql语句在mysql中如何执行(查询+更新)

文章目录 一 MySQL 基础架构1.1 MySQL 基本架构1.2 Server 层基本组件介绍1) 连接器2) 查询缓存(MySQL 8.0 版本后移除)3) 分析器4) 优化器5) 执行器 二 语句分析2.1 查询语句2.2 更新语句为什么要用两个日志模块,用一个日志模块不行吗?为什么必须有“两阶段提交”…

基于Java+SpringBoot+SpringCloud+Vue的智慧养老平台设计与实现(源码+LW+部署文档等)

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

框架的前置学习-反射

运行java代码要经历的三个阶段 反射,程序框架设计的灵魂,将类的各个组成部分封装成其他对象,这就是反射机制。 框架:半成品的软件,在框架的基础上进行开发,可以简化编码 反射的好处: 可以在…

通过easyui实现动态控制表格字段显示、导出表格数据

前言 学过layui前端框架的都知道,layui默认帮我们实现了控制表格字段显示以及数据的导出功能。 1、控制表格字段显示 2、数据导出 3、导出为pdf:导出按钮的右边那个按钮就是打印pdf的 那么,easyui要怎么实现这些功能呢?这篇文章就…

matlab计算基础

目录 1. 创建矩阵和向量 2. 矩阵的基本运算 2.1 数乘 2.2 转秩 2.3 求逆 2.4 点积 2.5 拼接 3. 复数 4. 矩阵元素的引用 5.工作区中数据的保存和使用 1. 创建矩阵和向量 向量包括行向量和列向量,向量就是个特殊的矩阵,向量可看作C语言中的一维…

华为OD机试之报文回路(Java源码)

题目描述 IGMP 协议中响应报文和查询报文,是维系组播通路的两个重要报文,在一条已经建立的组播通路中两个相邻的 HOST 和 ROUTER,ROUTER 会给 HOST 发送查询报文,HOST 收到查询报文后给 ROUTER 回复一个响应报文,以维持…

网络:从socket编程的角度说明UDP和TCP的关系,http和tcp的区别

尝试从编程的角度解释各种网络协议。 UDP和TCP的关系 从Python的socket编程角度出发,UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)是两种不同的传输协议。 TCP是一种面向连接的协议&#xff0c…

2022深圳杯C题思路解析

题目描述: 继续更新 再更问题三 继续更新第一问、第四问 1.2 问题重述 在制定电动车调度方案时,必须考虑充、换电池的时间成本,从而提出了新 的车辆运输选址及调度问题。 1) 已知自动驾驶电动物料车在取料点 P 和卸货点 D …

STM32CubeMX+VSCODE+EIDE+RT-THREAD 工程创建

Eide环境搭建暂且不表,后续补充。主要记录下Vscode环境下 创建Rt-thread工程的过程。分别介绍STM32CubeMX添加rtt支持包的方式和手动添加rtt kernel方式。STM32CubeMX生成工程的时候有"坑",防止下次忘记,方便渡一下有缘人&#xff…

MYSQL进阶-事务的基础知识

1.什么是数据库事务? 就是把好几个sql语句打包成一个整体执行,要么全部成功,要么全部失败!!! 事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执 行的结果必…

【RabbitMQ】golang客户端教程3——发布订阅(使用fanout交换器)

发布订阅 在上一个教程中,我们创建了一个工作队列。工作队列背后的假设是每个任务只传递给一个工人。在这一部分中,我们将做一些完全不同的事情——我们将向多个消费者传递一个消息。这就是所谓的“订阅/发布模式”。 为了说明这种模式,我们…

Vulnhub: DriftingBlues: 6靶机

kali:192.168.111.111 靶机:192.168.111.180 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.180 查看robots.txt发现存在目录:/textpattern/textpattern 访问后发现是textpattern cms 目录爆破发现文件sp…

尚品汇总结三:商城首页(面试专用)

目录 首页商品分类实现 1、封装数据接口 2、页面静态化: 什么是页面静态化 为什么要使用静态化 首页商品分类实现 前面做了商品详情,我们现在来做首页分类,我先看看京东的首页分类效果,我们如何实现类似效果: 思路…

2020年06月《全国青少年软件编程等级考试》Python一级真题解析

一、单选题 第1题 以下哪种输入结果不可能得到以下反馈: 重要的事情说三遍:安全第一!安全第一!安全第一! A:print(“重要事情说三遍:”“安全第一!”*3) B:print(“重…