RTOS基础知识

         实时操作系统(RTOS)是一种体积小巧,确定性强(时序可预测的执行模式)的计算机操作系统,通常用于需要在严格时间限制内对外部事件做出反应的嵌入式系统,且RTOS比通用操作系统体积更小,重量更轻,因此非常适用于内存,计算和功率受限的设备。

  • FreeRTOS只提供核心的实时调度功能,任务间通信,定时和同步原语。

多任务处理

多任务处理:操作系统在同一时间内通过CPU时间轮转,优先级调度或多队列等方式同时管理多个任务(进程或线程),使每个任务看似每一时刻都独占CPU。

        相比于linux等通用操作系统,像FreeRTOS这样小型的RTOS通常将线程称为任务,由于不支持虚拟内存,因此对于FreeRTOS来说进程与线程之间没有区别。

  • FreeRTOS不支持虚拟内存
    • 所有任务共享同一地址空间(即没有内存保护,任务间可以相互访问内存);
    • 上下文切换开销更小,调度策略更灵活(优先级抢占为主),更强调确定性(实时性);
      • 上下文切换开销小的原因:
        • 寄存器集少(通常只有8~16个核心寄存器,而linux除了30+寄存器外,还需要保存页表基地址寄存器,ASID等),因此,上下文保存与恢复量小
        • 无内存管理单元(MMU)开销(无需切换页表,刷新TLB)
        • 栈结构简单,只需保存必要寄存器(每个任务有独立的栈,但都在同一个地址空间)
      • 调度器设计精简,就绪列表只有几个(按优先级分组),查找下一个就绪任务O(1) 复杂度。
    • 每个任务都有独立堆栈,但由于所有任务共享同一地址空间,所以,所有栈也都在同一地址空间,相互之间无隔离,任务间可相互访问栈,因此,当其中一个任务栈溢出时,会破坏其他任务。

实时调度

        实时嵌入式系统旨在对现实世界的事件作出及时响应。这些事件通常有截止时间,实时嵌入式系统必须在此事件之前响应,RTOS调度策略必须确保遵循这些截止时间要求。

  • 以优先级为主,确保最高优先级任务能先被执行,若存在多个能够运行的同等最高优先级任务,则可选择在这些任务之间公平地分配处理时间。

kernel 特性

FreeRTOS 锁(信号量)

FreeRTOS任务与协程

FreeRTOS 队列

FreeRTOS任务通知

FreeRTOS软件定时器

FreeRTOS 内存管理

FreeRTOS 事件组 & 钩子函数 & 低功耗支持 & SMP

FreeRTOS debug

参考

FreeRTOS 文档 - FreeRTOS™

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐