文章目录

  • 1 优化缩短关中断的时间
    • 1.1 提取耗时操作
    • 1.2 划分为多次开关中断

1 优化缩短关中断的时间

无论是开关全局中断还是关指定中断,都会对中断的响应时间造成影响。关中断的时间越长,中断被延迟响应的时间也越长,所以在编写代码时,要尽可能地保护关中断的时间要尽可能地短。但是有时会发现,任务或低优先级中断访问资源的时间较长,此时我们需要调整代码,缩短关中断时间。

1.1 提取耗时操作

这种思路简而言之是:调整代码,优化访问资源的时间,将部分耗时的操作从原操作中提取出来。

在之间的示例中,可以看到有个链表遍历。如果单就链表遍历本身来看,其速度还是比较快的,但是由于遍历过程中有使用xprintf打印,如果考虑打印是通过串口输出,那么整个遍历过程将会比较耗时。当结点数量很多,串口的波特率较低时,其耗时就更长。

在这种情况下,如果采用关中断的方式,将会导致中断长时间的关闭,产生很大的影响。通过调整代码,我们可以将打印这个耗时操作给提取出来,不在链表遍历过程中执行。这样链表遍历过程就可以快速地执行完毕,从而尽快地让中断执行。

1.2 划分为多次开关中断

有时我们会对大块的代码进行开关中断保护,代码块越大,往往执行时间也越多。

但如果对这些大块代码分析可能会发现,并不是所有的代码都涉及到对共享资源的访问。所以有时可以将这些大块代码进行"划分",将原本对整个大块代码进行开关中断保护,分隔为多块保护。这样就相比之前就允许中断尽可能早的响应。


参考资料:

  1. 手把手教你学用嵌入式操作系统

优化缩短关中断的时间相关推荐

  1. sql优化的方法及思路_合理的sql优化思路--如何缩短SQL调优时间?

    概述 当生产环境发生故障或者系统特别慢的时候,这时候你从awr报告拿到有问题的sql,但是优化的时候却优化了很久还没解决,这时候在领导或者客户面前就不太好了...那么我们怎么去缩短sql调优的时间,一 ...

  2. 汇编cli(Clear Interrupt,禁止中断、关中断,对应的sti是开中断)

    CLI禁止中断发生,关中断 STI允许中断发生,开中断 这两个指令只能在内核模式下执行,不可以在用户模式下执行:而且在内核模式下执行时,应该尽可能快的恢复中断,因为CLI会禁用硬件中断,若长时间禁止中 ...

  3. linux 关中断 调度,关中断是否禁止任务调度?关中断能作为互斥吗?

    正 文 关中断是否禁止任务调度?关中断能作为互斥吗?(2008/11/25 21:36) 今天再看<嵌入式软件系统教程>((美)西蒙 著,陈向群 等译)  ,里面讲到关中断会关了任务调度, ...

  4. 关中断是否禁止任务调度?关中断能作为互斥吗?

    本文引自链接http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_16830.html?WebShieldDRSessionVerify=COR6tnpfsO ...

  5. 原子操作 临界区 关中断

    信号量 临界区 关中断 共享内存 什么是临界区 临界资源 1.临界资源 临界资源是一次仅允许一个进程使用的共享资源.各进程采取互斥的方式,实现共享的资源称作临界资源.属于临界资源的硬件有,打印机,磁带 ...

  6. 关于中断处理程序中的关中断函数disable_irq和disable_irq_nosync

    2010年7月20日19:18:30 关于中断处理程序中的关中断函数disable_irq和disable_irq_nosync disable_irq关闭中断并等待中断处理完后返回, 而disabl ...

  7. Bochs调试Linux内核初级入门2、bochs调试断点和单步指令、0x7c00、关中断和开中断指令

    前文见此: https://blog.csdn.net/bcbobo21cn/article/details/105314444 修改run.bat为:"C:\Program Files ( ...

  8. 使用关中断解决资源冲突问题

    文章目录 1 使用关中断解决资源冲突问题 1 使用关中断解决资源冲突问题 解决方法如下: 注意事项: 适用于嵌套中断间共享资源: 在开启了中断嵌套后,可能发生嵌套中断访问同一共享资源.此时,也可以使用 ...

  9. 关中断解决任务间资源共享问题

    文章目录 1 关中断解决任务间资源共享问题 1.1 工作原理 1.2 任务访问流程 1.3 需要注意的地方 1 关中断解决任务间资源共享问题 1.1 工作原理 实例:关中断为tinyOS的影响 1.2 ...

最新文章

  1. MyEclipse10整合Axis2插件
  2. c++删除容器中的奇数
  3. Android应用程序的组成部分和Manifest文件(转)
  4. HDU-不容易系列之(3)—— LELE的RPG难题
  5. DotFuscator使用步骤
  6. POJ分层练习题目列表
  7. 不要在作死的边缘试探(最后那个英雄手势挺好玩儿的)
  8. 华为管理学案例分析_华为案例分析——管理学作业.ppt
  9. excel冻结窗口怎么设置_excel冻结多行怎么设置-和冻结首行一样哦
  10. OCR识别技术之—车牌识别
  11. Could not establish connection to...
  12. 计算机网络与互联网(三)
  13. 河南星年华计算机科技有限公司怎么样,莫让年华逝流水
  14. 上万元游戏拼多多7块搞定 PICO防不住
  15. pycharm连接数据库步骤
  16. PHP快速入门(一)
  17. 双击放大图片 手指移动图片位置
  18. html5/Css3 网页设计 带音乐与食品模块
  19. 360n4手机可以装linux,360手机N4 root教程_360手机N4获取root权限的方法
  20. 【蓝桥杯】考前押题--并查集

热门文章

  1. 【UWB】Savitzky Golay filter SG滤波器原理讲解
  2. 【Python】爬虫学习
  3. P3 Simulink仿真-《Matlab/Simulink与控制系统仿真》程序指令总结
  4. PyTorch 实现经典模型7:YOLO (v1, v2, v3, v4)
  5. 1.7 对新序列采样-深度学习第五课《序列模型》-Stanford吴恩达教授
  6. 1.6 三维卷积-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  7. 3.8 神经网络解决逻辑运算问题-机器学习笔记-斯坦福吴恩达教授
  8. Ardino基础教程 24_RGB全彩LED
  9. 【任务脚本】0616吐槽tb坑爹活动,预测看好jd活动,更新汇总战绩,DIY净水器预告...
  10. 我的网盘(云存储)功能需求,免费网盘需求,争取早日和百度网盘说拜拜