rtos可以在多个程序执行时不用等待。还可以释放cpu性能。

rtos中可以将不同的功能写作不同的任务然后给他们不同的优先级。优先级高的任务快速执行,低的在空闲时执行。

如果单片机运行内存,闪存小时不适合运行rtos

并行:多任务同时执行。

并发:多个任务不同时进行。

单核cpu可以通过快速切换任务执行多个任务。

freertos对更高优先级的任务用抢占式优先级,同优先级用时间片轮询调度。

高优先级的任务并不会一直执行,导致低优先级的任务无法执行。如果高优先级等待资源、延时,时会执行低优先级任务。

同等级时间片轮询调度时有一个任务在时间片停止前结束,其他任务会直接执行。

任务状态

freertos通过状态机管理各个任务

任务状态有运行态,就绪态,阻塞态,挂起态。

在执行时为运行态。就绪态:准备执行。阻塞态:正在延时或等待外部事件。挂起态:类似于暂停,需要解挂才能运行。

只有就绪态才能变成运行态。

内部为一个列表实现任务切换。

freertos实时内核通过滴答定时器测量时间。

在切换任务时应该保存当前任务数据,再次切换时才可以直接回复。上下文保存在任务堆栈中。(将当前任务在cpu的寄存器的值保存到堆栈中)

什么时候任务切换

上下文切换在pendsv的isr中处理,因为pendsv可以手动触发。rtos滴答中断,任务执行完毕会触发pendsv异常产生中断。

空闲任务:确保存在一个始终能运行的任务,负责释放被删除的任务。

Logo

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

更多推荐