【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义

学习交流加

  • 个人qq:
    1126137994
  • 个人微信:
    liu1126137994
  • 学习交流资源分享qq群:
    962535112

上一篇文章我们学习了微处理器与微控制器的区别。点击链接查看上一篇文章的内容:微处理器与微控制器

本篇文章我们学习中断的概念与意义。本片文章只学习中断概念与意义,并不深入研究中断向量表与ISR中断服务程序的实现。同时本片文章讲解一个与中断有关的应用:断点调试。当然具体的断点调试方法会在后面讲解,本次只是说明中断在断点调试中的应用。

文章目录

  • 1、中断的概念与意义
    • 1.2、 中断的概念
    • 1.2、中断的意义
    • 1.3、中断的类型
    • 1.4、中断的优先级
  • 2、中断的应用-断点调试
    • 2.2、什么是程序的断点?
    • 2.2、 程序断点的实现原理
  • 3、总结

1、中断的概念与意义

1.2、 中断的概念

  • 中断是一种处理器与外设进行通信的机制(在我们学习了信号机制,会发现不一定是与外设之间)
  • 外设通过产生中断,向处理器告知,外部有重要事件发生
  • 处理器收到中断后,需要响应中断(具体如何响应见后面内容)

上面只是中断的简单概念。举个例子,我们点击鼠标的时候,鼠标这个外设会产生一个中断,当CPU收到这个中断的时候,CPU会响应这个中断,进而执行ISR(中断服务程序),在中断服务程序中肯定会调用鼠标的驱动模块,从而在电脑上我们才能看到鼠标的点击效果。

那么什么是中断服务程序呢(ISR)?

  1. 首先中断服务程序会从外设中读取外设的中断寄存器,从而获得中断的类型
  2. 然后根据中断类型,设计具体的处理逻辑(后面的学习中我们会发现实际上是通过中断向量表来选取具体的处理逻辑)
  3. 中断处理完毕后,还需要清除外设中的中断寄存器内容
  4. 然后清除CPU中的中断标识位
  5. 最后还需要恢复CPU中本该执行的指令

下面看一个图示来表示一个中断产生的过程:
在这里插入图片描述

  • 步骤一外设产生中断
  • 步骤二要先把当前正在执行的程序的上下文保存(比如通用寄存器的值)
  • 步骤三四读取外设中断寄存器的值,获得中断类型
  • 步骤五执行相应的中断处理程序
  • 步骤六清除外设的中断寄存器的值
  • 步骤七清除CPU的中断标识位
  • 步骤八恢复当前需要执行程序的上下文环境

那么,从程序的角度来考虑,中断服务程序(ISR)有哪些特征呢?

我们知道,中断服务程序执行完之后,需要再次回到之前的程序继续执行,所以ISR不能有返回值(想一想你有返回值得到话,谁来接收这个返回值呢?),并且,没有参数传递!因为前期已经通断中断向量表来选取了特定类型的处理逻辑,此处无需再让中断的类型当做参数传递来决定如何设计处理逻辑,所以无需参数。同时,对于这种打断程序运行的,比如后面的信号,程序最好不要太长,容易产生错误。所以ISR最好短小精悍,为了能够快速结束,最好少做浮点运算。

  • 不能有返回值,不能有参数传递
  • 尽量短小高效,避免浮点运算

1.2、中断的意义

  • 应用程序不必关心中断的处理与发生
  • 中断服务程序也不用关心应用程序的状态
  • 中断是上层应用与底层代码的分界线
    在这里插入图片描述

1.3、中断的类型

  • 硬中断

    • 通过处理器的中断信号线产生的中断(鼠标按一下产生的中断,通过中断信号线发送给处理器)
  • 软中断

    • 通过非法指令或者特殊指令陷入的中断(比如系统调用也是一种软中断,它就是通过特殊指令Int 0x80陷入内核,也可以看做一种中断。再比如后面会学习的信号,也是一种中断)

1.4、中断的优先级

比如此时有好几个中断信号产生,比如你的电脑正在运行微博程序,你点击鼠标,立马有反应,这说明什么?说明鼠标的优先级比微博程序的优先级高。其实,任何ISR的优先级,都比应用程序的优先级高。而中断中,也分为不同的优先级,高优先级的中断会优先得到CPU的处理,且一个中断ISR在运行时,如果再来一个比它优先级高的中断,这个高优先级的中断会打断那个正在执行的中断程序。

  • 中断优先级

    1. 多个中断同时出现时,处理器优先响应高优先级的中断
    2. 低优先级中断的ISR执行时,可以被高优先级的中断再次打断
    3. ISR比上层应用程序的优先级都高

2、中断的应用-断点调试

2.2、什么是程序的断点?

大家都知道断点调试。程序的断点,其实就是一个指令的地址。这个指令的地址,是调试工具(例如GDB)让代码停止执行时候的位置。当你设置断点后,程序会在你设置的断点处停止执行。然后去执行你的调试工具里面的相应程序,那么接下来你就可以使用调试工具来获取程序的相应信息,比如上下文环境,栈信息等

2.2、 程序断点的实现原理

程序断点的实现原理,依赖于CPU的中断机制。包括CPU的硬中断机制与软中断机制。

说的通俗一点,就是将断点处的指令替换为中断触发指令,不再继续执行当前程序,而是去执行中断服务程序ISR,然后ISR再将CPU控制权交给你的调试工具的处理程序。

  • 程序断点的实现原理

    1. 获取源程序指定行对应的代码地址(指令地址)
    2. 保存当前程序的上下文环境信息
    3. 把该指令地址处的指令,替换为中断触发指令
    4. 在中断服务程序ISR中将CPU控制权交给调试工具的处理程序
    5. 调试程序开始做相应处理(比如可以读取源程序的上下文信息或者栈信息)
    6. 调试程序处理完后,将之前指令地址处的指令还原
    7. 恢复之前程序的上下文信息
    8. 源程序继续从断点处执行程序

下面来看一张图理解断点的实现原理

在这里插入图片描述

其中中断触发指令,被CPU执行后,OS会向调试程序发送signal,signal后面会讲。调试程序收到signal,会执行响应的处理函数handle。

以上只是大致讲原理,没有深入研究源码。

3、总结

本篇文章要学会:

  • 中断的概念与意义
  • 中断的类型(硬中断与软中断)
  • 中断的应用-断点与断点的实现原理

本系列文章几乎全部参考狄泰软件学院相关课程,想学习的可以加群,
群聊号码:199546072

学习探讨加个人:
qq:1126137994
微信:liu1126137994

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

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

相关文章

SqlServer2008 安装经验日志总结

SqlServer2008 产品密钥(仅供学习)Developer: PTTFM-X467G-P7RH2-3Q6CG-4DMYBEnterprise: JD8Y6-HQG69-P9H84-XDTPG-34MBB------------------sqlserver2008安装经历步骤如下----------------------------- 1 安装前会对操作系统打补丁,安装完…

推荐学习-数据结构与算法之美

推荐一个学习资源:数据结构与算法之美。主要包括以下几个学习内容: 20个经典数据结构与算法100个真实项目场景案例文科生都能看懂的算法手绘图解轻松搞定BAT的面试通关秘籍 作者:王争 前谷歌工程师 内容很强。扫描我的二维码买的话&#x…

.Net读取xlsx文件Excel2007

.NET 读取Excel 2007的xlsx文件和读取老的.xls文件是一样的,都是用Oledb读取,仅仅连接字符串不同而已。 读取xlsx 用的是Microsoft.Ace.OleDb.12.0; 具体操作方法如下: public static DataTable GetExcelToDataTableBySheet(string FileFullPath, string…

【软件开发底层知识修炼】三 深入浅出处理器之三 内存管理与内存管理单元(MMU)

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 上一篇文章学习了中断的概念与意义,以及中断的应用-断点调试原理。点击链接复习上一篇文章:中断的概念与意义 本片文章继续学…

hbase思维导图

持续更新中 hbase思维导图 感谢分享1. hbase 概述2. hbase 数据模型3. hbase 架构4. hbase 的读写流程5. hbase 优化1. hbase 概述 2. hbase 数据模型 3. hbase 架构 4. hbase 的读写流程 5. hbase 优化

安卓从入门到进阶推荐学习方法与书籍整理(pdf)

前言:技术书阅读方法论 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用。 对于每一章的知识,先阅读标题&…

SharePoint中的权限体系

1.MOSS中的权限结构 MOSS中的权限结构主要有三部分:网站权限,列表权限,个人权限。 网站权限由18种如下图: 列表权限由12种,如下图: 个人权限由三种,如下图: 2.权限级别 上面提供…

MobaXterm_Personal_20.1最简单方式链接阿里云服务器

MobaXterm_Personal_20.1链接购买的阿里云服务器1.登录到阿里云首页2.阿里云首页3. 找到 服务器实例4. 重置密码5. 配置 MobaXterm_Personal_20.15.1 MobaXterm_Personal_20.1介绍6. 输入重置的密码1.登录到阿里云首页 2.阿里云首页 3. 找到 服务器实例 4. 重置密码 5. 配置 Mo…

机器学习和python学习之路精心整理技术书从入门到进阶

“机器学习/深度学习并不需要很多数学基础!”也许你在不同的地方听过不少类似这样的说法。对于鼓励数学基础不好的同学入坑机器学习来说,这句话是挺不错的。不过,机器学习理论是与统计学、概率论、计算机科学、算法等方面交叉的领…

FusionChart完全入门手册8

动画样式类型 FusionCharts做得最好的事情之一就是图表动画序列,这是用户静静乐道的。默认情况下,FusionCharts仅在数据绘制(柱状图、饼图、折线图等)时候使用动画。但是FusionCharts V3不限制你的想象力。 使用动画样式,你可以…

算法与数据结构+一点点ACM从入门到进阶吐血整理推荐书单(珍藏版)

学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2: 780902027 前言:技术书阅读方法论…

工作中使用的工具

工作中使用的工具分享一下后续持续更新

【软件开发底层知识修炼】四 深入浅出处理器之四 结合高速缓存以及TLB与虚拟内存

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 文章目录0、回顾1、高速缓存(Cache)的引入2、利用TLB加速地址翻译3、Cache与物理内存是如何映射的3.1、直接映射法&#xff1a…

研发中会使用到的工具

研发中会使用到的工具分享一下后续持续更新

【C#】【引用加原创】C#实现kalman滤波

最近为了项目,同事让我帮他做一个硬件版的kalman滤波器,实现对设备的kalman滤波,以验证他的理论算法。 犹豫了好几天,用dsp吧,我的kalman滤波算法比较简单,有点大材小用。刚好手里有一块arm调试版&#xff…

【软件开发底层知识修炼】五 gcc-C语言编译器

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 文章目录1、GCC与gcc2、gcc的幕后工作3、实用的gcc选项3.1、预处理选项-解决宏错误3.2、-S参数-辅助编写汇编程序的好方法3.3、获取系统头文件路径3.4…

思维模型分享

思维模型1.思维建模1.1 模型的用途1.2构建模型的3种方法1.3多样性预测定理1.4分类模型1.5 变差模型1.5.1 解释变差的百分比1.6 模型误差分解定理1.7 多模型思维1.8 对人类行为建模1.8.1 理性行为者模式2.模型思维2.1 正态分布2.2中心极限定理2.2.1 平方根法则2.2.2 检验显著性2…

认识再次提高。

今天晚上开会,又主动请缨拿回一个不可能完成的任务。 又是冒进了,最近对自己的认识又提升了一个高度:我发现我如果不给自己压力就会活得很无聊很无聊。 没有压力就没有动力,用我身上,太合适了。 比如,签合同…

在工程中最常用的 vim使用技巧

学习交流加(可免费帮忙下载CSDN资源):个人微信: liu1126137994学习交流资源分享qq群1(已满): 962535112学习交流资源分享qq群2: 780902027 文章目录1、vim编辑常用快捷键2、文件索引…

动态规划过程

动态规划过程应用背包问题:分享一下 有一个背包,容量是4磅,现有如下产品 1)要求达到的目标为装入的背包的总价值最大,并且要求重量不能超出 2) 要求转入的物品不能重复 思路分析:算法其实是模型建立的过程 …