影响RTOS实时性的因素

简介: 影响RTOS实时性的因素

在嵌入式实时系统中,一般对实时性都具有很高的要求,那么什么是实时性呢?

实时性:就是从事件发生到系统响应的时间。

但在实际的应用编程中,有时往往会应为某一段代码使系统毫无实时性可言,那么影响实时性的因素都有哪些呢?

  1. 线程内任务在阻塞运行
  2. 中断相关操作
  3. 临界区相关操作

线程内任务在阻塞运行

实时线程内需要避免运行阻塞的任务:

  • 避免线程内有等待释放信号量,释放锁,以及阻塞的队列等等。。。
  • 避免使用delay函数进行延时操作,在需要delay时,可考虑使用该实时线程的运行周期对该函数进行周期调用
/*
  PeriodFunc()函数的运行周期为10ms
  period_ms为RTThread线程的运行周期
*/
void PeriodFunc(uint32_t period_ms) {
  static uint8_t run_period_ms = 10;
  static uint8_t current_period_ms = 0;
  current_period_ms += period_ms;
  if(current_period_ms >= run_period_ms) {
    current_period_ms = 0;
    /* user code */
  }
}
void RTThread(void *args) {
  while(1) {
    /* 使用该方法一定要保证线程的运行周期时准确的,
       否则函数的运行周期将不会准确 
    */
    PeriodFunc(1);
    DelayMs(1);
  }
}

中断相关知识

关中断时间

程序中有一些临界段代码,若想安全访问则需要关闭中断,那么访问这段代码前关总中断,访问完后打开总中断,在这个时间内,系统是无法响应外部任何中断的,这一段时间为关中断时间。

最大关中断时间

指的是这么多个临界段代码的关中断时间中最大的那个,即这个时间就代表了最差最坏情况下中断的关闭时间了,因为实时操作系统中很多时间问题都是基于最差情况下考虑的。

中断响应时间

接收到此中断到此中断对应的中断服务函数的第一条语句执行所经历的时间。其计算公式是:

中断响应时间 = 最大关中断时间 + 保护 CPU 内部寄存器的时间 + 进入中断服务函数的执行时间(会根据中断向量表找到对应的终端服务函数地址即入口)+ 开始执行中断服务例程 (ISR) 的第一条指令时间

中断恢复时间

指从中断响应成功(即开始执行中断服务例程(ISR)的第一条指令时刻)一直到中断服务函数执行完毕再到切换回被中断的任务的接着一条代码执行所经历的时间。其计算公式是:

中断恢复时间 = 中断服务函数执行所需时间(这样说不太准确,意思就是基本执行完所需时间,不包括退出中断服务函数前会调用一下OSIntExit() 函数)+ OSIntExit()(这个函数在中断服务函数末尾调用的,退出中断前来发生任务切换的)+ OSIntCtxSw()(真正发生任务切换的函数,会进行寄存器数据弹出等操作)

临界区相关知识

基本临界区

临界区是提供互斥功能的一种非常原始的方法,进入临界区的方法使用中断锁把中断全部关掉(当然任务也就无法调度)。临界区内的代码必须要有很短的运行时间,否则会反过来影响中断的响应时间。

使用中断锁来操作临界区的方法可以应用于任何场合,且其他几类同步方式都是依赖于中断锁而实现的,可以说中断锁是最强大和最高效的同步方法。只是使用中断锁最主要的问题在于,在中断关闭期间,系统将不再响应任何中断,也就不能响应外部的事件。所以中断锁对系统的实时性影响非常巨大,当使用不当的时候会导致系统完全无实时性可言(可能导致系统完全偏离要求的时间需求)。而使用得当,则会变成一种快速、高效的同步方式。

任务临界区

挂起调度器也称为锁定调度器。基本临界区是保护一段代码不被其他任务或中断打断,而由挂起调度器实现的临界区只能保护一段代码不被其他任务打断,并不能约束中断,因为在这种方式下,中断是使能的。

相关文章
|
3月前
|
存储 NoSQL Redis
单线程模型想象不到的高并发能力、多路复用是效率杠杆
单线程模型想象不到的高并发能力、多路复用是效率杠杆
|
4月前
|
负载均衡 监控 容灾
系统频繁崩溃,如何考虑系统的稳定性和可扩展性?
最近网传互联网应用信息系统频繁崩溃,语雀崩完淘宝崩,淘宝崩完滴滴崩,随着业务的发展和技术的进步,对于信息系统的要求也越来越高。信息应用系统为了满足不断增长的用户和业务需求,提高系统的稳定性和扩展性至关重要。
73 1
|
8月前
|
SQL 人工智能 算法
识别和应对内存抖动
内存抖动是指内存不稳定,频繁分配和回收,导致内存不稳定,其表现形式为频繁GC,
|
9月前
|
算法 计算机视觉
使用点特征匹配稳定从抖动平台捕获的视频
使用点特征匹配稳定从抖动平台捕获的视频。
69 0
|
存储 传感器 机器学习/深度学习
V2X会是未来趋势吗?看看这种轻量级方法,大幅降低碰撞概率!
本文提出了一种Ledger概念,它通过Ledger信息的广播,在一个资源预留区间(RRI)内向网络中的每辆车传递碰撞信息。碰撞车辆知道它已经与其他车辆相撞,并将在下一个 SPS 期间重新选择。除此之外,其他协议都遵循 SPS。通过引入 Ledger,虽然牺牲了14.29% 的资源,但最终可以降低碰撞概率。本文使用蒙特卡罗模拟器对Ledger系统的性能进行了验证和分析。数值结果表明,遵循 SPS 协议,Ledger 系统可以使碰撞概率在一定数量 RRI 后收敛到零。
V2X会是未来趋势吗?看看这种轻量级方法,大幅降低碰撞概率!
|
存储 UED 异构计算
浅析Relaxed Ordering对系统的影响对PCIe系统稳定性的影响
我们介绍了PCIe TLP的排序机制原理,也可以看到Relaxed Ordering也是PCIe一个优化性能的利器。在很多PCIe系统中,PCIe设备也基本是默认打开的Relaxed Ordering这个机制的特性,以保持达到最高的性能。 但是,小编想说下,对Relaxed Ordering的意见是,酌情看是否适合自己的系统,Relaxed Ordering并不是通用的优势。在不适合自己情况,使用Relaxed Ordering将是一场灾难。
|
编译器
指令流水线影响因素分类
指令流水线影响因素分类
195 0
指令流水线影响因素分类
|
存储 缓存 并行计算
并行视角下的硬件习性
大多数人根据直觉就知道,在系统间传递消息要比在单个系统上执行简单计算更加耗时。不过,在共享同一块内存的系统的线程间传递消息是不是也更加耗时,这点可就不一定了。本章主要关注共享内存系统中的同步和通信的开销,只涉及了一些共享内存并行硬件设计的皮毛,想了解更多信息的读者,可以翻看Hennessy和Patterson的经典教材最新版[HP95]。
124 0
并行视角下的硬件习性