OS的Alarm定时器调度机制

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

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


http://www.ppmy.cn/news/1183614.html

相关文章

【C++指针】函数返回指针类型 与 函数返回英语类型(关于获取局部变量的操作)

错误示范 #include <bits/stdc.h> using namespace std;int* RetPtr(void) { //函数返回指针类型int tempData1 1; //函数执行完后&#xff0c;这个变量的生命周期结束&#xff0c;变量的内存被系统收回cout << "第一个函数中值的地址为&#xff…

C++编译与运行:其三、虚函数、虚表和多态

对于非虚非静态成员函数的调用&#xff0c;是在编译期间就明确了的。简单地说&#xff0c;调用的时候将this指针传入函数&#xff0c;后面根据this指针指向的对象执行程序。但是在虚函数中却不一样。 一、虚函数执行原理&#xff1a;虚函数指针和虚函数表 虚函数表&#xff1…

使用 Pyro 和 PyTorch 的贝叶斯神经网络

一、说明 构建图像分类器已成为新的“hello world”。还记得当你第一次接触 Python 时&#xff0c;你的打印“hello world”感觉很神奇吗&#xff1f;几个月前&#xff0c;当我按照PyTorch 官方教程并为自己构建了一个运行良好的简单分类器时&#xff0c;我也有同样的感觉。 我…

Geeker-Admin中ProTable表格分页之自定义接口页码、尺寸参数

最近挖了个新玩意儿&#xff0c;Geeker-Admin&#xff0c;看起来感觉挺好。 鼓捣了半天搞定了与服务端的API接口对接&#xff0c;但在表格分页的时候又遇到了问题&#xff0c;系统默认是pageNum/pageSize这两个参数名用来分页&#xff0c;而服务端是current/size&#xff0c;开…

C++ 学习系列 -- 标准库常用得 algorithm function

一 前言 c 标准库中提供了许多操作数据结构&#xff1a;vector、list、deque、map、set 等函数&#xff0c;学习并了解这些常用函数对于我们理解 c 的一些设计模式有着重要的作用。 二 常用的 algorithm function 源码 源代码位置&#xff1a; bits/stl_algo.h 1. accumu…

【ROS入门】机器人导航(仿真)——导航实现

文章结构 建图 SLAM编写gmapping节点相关launch文件执行 地图服务 map_server地图保存节点 map_server地图服务 map_server 定位 amcl编写amcl节点相关的launch文件编写测试launch文件执行 路径规划 move_basemove_base与代价地图碰撞算法 move_base使用launch文件配置文件laun…

git config pull.rebase false

git pull 默认使用merge 可以使用 git pull --rebase 命令使用rebase 或者配置 git config pull.rebase true 使 git pull命令执行 git pull --rebase git config pull.rebase false 的作用是设置 Git 在执行 git pull 命令时默认使用 merge 而不是 rebase。 git pull 命…

Day 11 python学习笔记

模块 内置模块 random random&#xff1a;随机数模块 我们可以在解释器中看到其蕴含的方法 接下来我解释一些常用的方法&#xff1a; random.random( ) random.random( ) 返回0-1的随机数 [0,1) >>> random.random() 0.364183511476754 random.randint(n,m) r…