长春做网站公司长春网站排名,计算机网页设计与制作教程,点点 网站建设,门户网站建设的必要性学习交流加 个人qq#xff1a; 1126137994个人微信#xff1a; liu1126137994学习交流资源分享qq群#xff1a; 962535112 上一篇文章我们学习了微处理器与微控制器的区别。点击链接查看上一篇文章的内容#xff1a;微处理器与微控制器
本篇文章我们学习中断的概念与意义。… 学习交流加 个人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
首先中断服务程序会从外设中读取外设的中断寄存器从而获得中断的类型然后根据中断类型设计具体的处理逻辑后面的学习中我们会发现实际上是通过中断向量表来选取具体的处理逻辑中断处理完毕后还需要清除外设中的中断寄存器内容然后清除CPU中的中断标识位最后还需要恢复CPU中本该执行的指令
下面看一个图示来表示一个中断产生的过程
步骤一外设产生中断步骤二要先把当前正在执行的程序的上下文保存比如通用寄存器的值步骤三四读取外设中断寄存器的值获得中断类型步骤五执行相应的中断处理程序步骤六清除外设的中断寄存器的值步骤七清除CPU的中断标识位步骤八恢复当前需要执行程序的上下文环境
那么从程序的角度来考虑中断服务程序ISR有哪些特征呢
我们知道中断服务程序执行完之后需要再次回到之前的程序继续执行所以ISR不能有返回值想一想你有返回值得到话谁来接收这个返回值呢并且没有参数传递因为前期已经通断中断向量表来选取了特定类型的处理逻辑此处无需再让中断的类型当做参数传递来决定如何设计处理逻辑所以无需参数。同时对于这种打断程序运行的比如后面的信号程序最好不要太长容易产生错误。所以ISR最好短小精悍为了能够快速结束最好少做浮点运算。
不能有返回值不能有参数传递尽量短小高效避免浮点运算
1.2、中断的意义
应用程序不必关心中断的处理与发生中断服务程序也不用关心应用程序的状态中断是上层应用与底层代码的分界线
1.3、中断的类型 硬中断 通过处理器的中断信号线产生的中断鼠标按一下产生的中断通过中断信号线发送给处理器 软中断 通过非法指令或者特殊指令陷入的中断比如系统调用也是一种软中断它就是通过特殊指令Int 0x80陷入内核也可以看做一种中断。再比如后面会学习的信号也是一种中断
1.4、中断的优先级
比如此时有好几个中断信号产生比如你的电脑正在运行微博程序你点击鼠标立马有反应这说明什么说明鼠标的优先级比微博程序的优先级高。其实任何ISR的优先级都比应用程序的优先级高。而中断中也分为不同的优先级高优先级的中断会优先得到CPU的处理且一个中断ISR在运行时如果再来一个比它优先级高的中断这个高优先级的中断会打断那个正在执行的中断程序。 中断优先级 多个中断同时出现时处理器优先响应高优先级的中断低优先级中断的ISR执行时可以被高优先级的中断再次打断ISR比上层应用程序的优先级都高
2、中断的应用-断点调试
2.2、什么是程序的断点
大家都知道断点调试。程序的断点其实就是一个指令的地址。这个指令的地址是调试工具例如GDB让代码停止执行时候的位置。当你设置断点后程序会在你设置的断点处停止执行。然后去执行你的调试工具里面的相应程序那么接下来你就可以使用调试工具来获取程序的相应信息比如上下文环境栈信息等
2.2、 程序断点的实现原理
程序断点的实现原理依赖于CPU的中断机制。包括CPU的硬中断机制与软中断机制。
说的通俗一点就是将断点处的指令替换为中断触发指令不再继续执行当前程序而是去执行中断服务程序ISR然后ISR再将CPU控制权交给你的调试工具的处理程序。 程序断点的实现原理 获取源程序指定行对应的代码地址指令地址保存当前程序的上下文环境信息把该指令地址处的指令替换为中断触发指令在中断服务程序ISR中将CPU控制权交给调试工具的处理程序调试程序开始做相应处理比如可以读取源程序的上下文信息或者栈信息调试程序处理完后将之前指令地址处的指令还原恢复之前程序的上下文信息源程序继续从断点处执行程序
下面来看一张图理解断点的实现原理 其中中断触发指令被CPU执行后OS会向调试程序发送signalsignal后面会讲。调试程序收到signal会执行响应的处理函数handle。
以上只是大致讲原理没有深入研究源码。
3、总结
本篇文章要学会
中断的概念与意义中断的类型硬中断与软中断中断的应用-断点与断点的实现原理
本系列文章几乎全部参考狄泰软件学院相关课程想学习的可以加群 群聊号码199546072
学习探讨加个人 qq1126137994 微信liu1126137994