当前位置: 首页 > news >正文

OS的Alarm定时器调度机制

  1. 调度表触发的任务在编译时就被静态定义,任务的触发时间和执行顺序是固定的。这种方式适用于已知的、固定的任务触发模式,例如周期性任务或事件驱动任务。
  2. 而使用 Alarm 机制触发的任务具有更大的灵活性。Alarm 允许在运行时动态地设置和修改任务的触发时间和间隔。这种方式适用于需要根据实时系统的动态变化来触发任务的场景,可以根据实际情况动态调整任务的触发时间,以满足实时性要求。
  3. 如果调度表的任务和 Alarm 的任务同时触发,通常会采用优先级规则来确定哪个任务先执行。具体的处理方式取决于操作系统的调度策略和任务的优先级设置。
  4. 调度表中任务是通过调度器触发的,而alarm的任务是通过计时器触发的。alarm的任务如何在运行时动态设置和修改触发时间和间隔,可能涉及到时间同步的东西。
  5. 由多alarm触发的多任务周期晃动很大,是由于高优先级任务抢占低优先级任务,导致低优先级任务要等高优先级任务执行完才能执行。首先,出现这种情况,肯定是对于任务的优先级和触发周期没有合理安排导致的。解决方法就是调整优先级和触发周期或改用调度表。

 调度表的周期性任务与alarm周期性任务可以理解为,如果到了触发时间,如果有高优先级的任务抢占了低优先级的任务,调度表触发的任务会将任务挂起,之后等到下一个周期在重新执行,而alarm触发的任务是等高优先级任务执行完,就立即执行低优先级任务,alarm是基于全抢占调度机制实现的。如果调度表的周期任务与alarm的周期任务撞上了,调度表中的任务优先级高,那就是调度表的任务执行完后立即执行alarm的任务。 

http://www.lryc.cn/news/208362.html

相关文章:

  • I2C协议
  • 全栈经验总结(不间断更新)
  • 什么是恶意代码?
  • HCL模拟器选路实验案例
  • toluaframework中C#怎么调用Lua的方法以及无GC方法
  • 安装pandas报错
  • 总有一天,你一定会很棒
  • 带你深入了解队列(c/cpp双版本模拟实现)
  • 接口自动化测试实操
  • Virtual DOM
  • 数据结构与算法-二叉树的遍历
  • Qt之普通项目如何生成DLL(含源码+注释)
  • Java注解及自定义注解
  • ps2024滤镜插件Portraiture
  • Vue 实战项目(智慧商城项目): 完整的订单购物管理功能 内涵资源代码 基于Vant组件库 Vuex态管理 基于企业级项目开发规范
  • JVM——一些零散的概念(后续学习深入了再补充)
  • OpenCV学习(三)——响应鼠标事件(获取点击点坐标和颜色,利用鼠标进行绘图)
  • 基于安卓android微信小程序的投票系统
  • 没有上司的舞会
  • 2.18每日一题(不直接给f(x)的定积分及变上限积分)
  • RHCE8 资料整理(四)
  • 目标跟踪ZoomTrack: Target-aware Non-uniform Resizing for Efficient Visual Tracking
  • Flink Data Sink
  • 机器学习——正则化
  • 【c++】打家劫舍(动态规划)
  • eslint提示 xxx should be listed in the project's dependencies
  • H3C LC-5120-52SC-HI配置管理IP
  • 数据结构与算法之排序: 归并排序 (Javascript版)
  • Java练习题2021-2
  • 深度学习面试题目01