FreeRTOS]
FreeRTOS的主要特性如下:实时性:FreeRTOS]
任务数量:FreeRTOS对任务数没有限制,同一优先级也可以有多个任务。这点上比uC/OS-II 好。
抢占式或协作式调度算法:任务调度既可以为抢占式也可以为协作式。采用协作式调度算法后,一个处于运行态任务除非主动要求任务切换(Yielding),否则是不会被调度出运行态的。
任务调度的时间点:调度器会在每次定时中断到来时决定任务调度,同时外部异步事件也会引起调度器任务调度。
调度算法:任务调度算法首先满足高优先级任务最先执行,当多于1个任务具有相同的高优先级时,采用round]
队列:任务间传递信息可以采用队列方式,FreeRTOS]任务间同步:FreeRTOS 支持基本的信号量功能。FreeRTOS 采用队列来实现信号量的功能,可以认为一个值为n的信号量就是一个长度为n的队列,队列中每个元素的大小为0。这样的队列并不会浪费宝贵的内存空间。
对于死锁(Deadlock)的处理:FreeRTOS 并没有实现一种可以完全避免死锁的机制。只是通过指定一个阻塞的最大时间限(timeout)来减少死锁现象的发生。或者说是给出了当死锁现象发生时解锁的可能。当然能不能真的解锁要依赖于使用者的处理代码是否合适。
临界区:FreeRTOS 采用开关中断的方式实现临界区保护。任务代码中临界区可以嵌套,FreeRTOS 会自动记录每个任务中临界区嵌套的层数。 暂停调度:与进入临界区类似,FreeRTOS]
内存分配:FreeRTOS]
优先级翻转:FreeRTOS 没有提供优先级继承机制或其他的避免优先级翻转的方法。
|