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

OS的Alarm定时器调度机制

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

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


http://www.kler.cn/news/108680.html

相关文章:

  • oracle,CLOB转XML内存不足,ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE“,
  • Think-Queue3一直提示[Exception]redis扩展未安装
  • 开源B2B网站电子商务平台源码下载搭建 实现高效交易的桥梁
  • Kotlin数据流概览
  • server2012 通过防火墙开启局域网内限定IP进行远程桌面连接
  • 工作组与域
  • 基于SSM的汽车维修管理系统
  • 透明安全地解释Moonbeam基金会分配的GLMR去了哪
  • 【K8S】常用的 Kubernetes(K8S)指令
  • LV.12 D12 GPIO实验 学习笔记
  • Makefile泛谈
  • 9、电路综合-基于简化实频的任意幅频响应的微带电路设计
  • 【zookeeper】zk的ZAB原子广播协议
  • C语言实现输入一个字符串,递归将其逆序输出
  • appium操控微信小程序的坑
  • 【iOS】——知乎日报第二周总结
  • 【Java】Map集合中常用方法
  • 【2023年NCST C语言新生培训】| 五次培训总结 | C到C++内容补充 | 排位赛详细题解 |《万字长文》
  • Python之函数-传实参的两种方式
  • UNUNX安全的交易所
  • 大数据与人工智能的未来已来
  • 手写IOC
  • 不做学习的奴隶,更要注重生活
  • IntelliJ IDEA 常用快捷键-个人查阅
  • modelsim仿真报错:vlog-2388 ‘scl‘ already declared in this scope
  • Python求n位的自幂数
  • Maven第一章:Maven安装、验证、使用
  • 基于 ARM+FPGA+AD平台的多类型同步信号采集仪开发及试验验证(二)板卡总体设计
  • html2pdf
  • Python实现双目标定、畸变矫正、立体矫正