从前后台架构的软件开发过渡到使用实时操作系统(rtos)可能是一项困难的工作。但使用rtos有许多优势,例如简化应用集成,支持任务抢占调度,当开发人员使用复杂的32位微控制器,且可以获取足够的flash和ram空间时,使用rtos开始变得有意义。许多32位应用程序需要使用usb、tcp/ip和文件系统,这对于裸机应用程序的开发是非常困难的,且大多数第三方中间件被设计为与rtos无缝集成。
在使用rtos之前,用户可能需要深入研究rtos的细节,我们来了解一下rtos中常用的调度技术。
1时间片轮询调度
前后台系统实现通常基于轮询调度技术,它是一种很自然的软件编写方式,只需向超级循环中添加新代码,相当于增加了一个新的任务。
rtos中的轮询调度策略,是允许多个任务可以分配同一个优先级别。调度程序基于时钟监控任务时间,任务处于相关优先级,按照先进先出的原则执行分配到的时间片,时间到了,即使当前任务还没有完成,任务也将cpu时间传递给下一个任务。在下一个分配到的时间段内,该任务将从它停止的位置继续执行。
常用的rtos,如μc/os-iii(cs/os3)、freertos都支持时间片轮询算法。freertos中每个任务的时间片长度是固定的,为一个时间节拍;而μc/os-iii中每个任务的时间片长度可变,可在任务创建时指定。
2基于优先级的协同调度
在rtos中,协同调度是基于优先级的非抢占调度方法。任务按优先级排序,并且是事件驱动类型的,一旦正在运行的任务完成,或者任务主动调用os服务放弃cpu,就绪运行的优先级最高的任务才可以获得cpu使用权。
3抢占式调度
rtos通过可抢占调度保证实时性。为了保证任务响应,在抢占调度策略中,只要一个优先级更高的任务就绪,正在运行的任务低优先级任务将被切换出来。通过抢占,正在运行的任务被迫放弃处理器,即使任务工作还没有完成。
rtos通常可以配置为使用许多确定性调度算法,以保证满足任务截止时限。如freertos、μc/os-iii支持抢占和时间片轮询两种调度方法。
4总结
rtos对于嵌入式软件开发人员来说是一个强大的工具。rtos应用中,每个任务都有单独的任务控制块,其中包含堆栈、优先级和id等参数。每个任务都可以被看作是单独的应用程序。rtos还提供了各种各样的同步和通信工具,如信号量、互斥信号量和消息队列,简化应用的开发。
但任务切换将消耗cpu时间,即使在32位处理器上,rtos也会造成时间损失。任务切换比中断占用更多的时间。如果是一个很小的应用程序,但需要充分利用处理器资源,在这种情况下,需仔细考虑rtos的可行性。
每种调度算法都有其优缺点,了解rtos常用的调度算法,可以帮助我们做出合适的选择。
AcrelCloud-3100高校宿舍预付费电控系统
在架构尺度上的部分技术经验与积累分享
2021全球AIoT开发者生态白皮书发布
采用AD9850的信号发生器的设计方案
华为荣耀V9:荣耀V9和华为mate9对比评测,打脸打的啪啪响!
来了解一下RTOS应用中的调度策略
联诚发LED透明屏和智慧荧光棒系列为全球各类舞台演绎增添活力与光彩
ABB机器人与人完美协作表演现代舞,展示了人与机器人合作的未来
用智能机器人为患者配药
智能手机出货量的下滑颜值,背道而驰的小米与华为谁才是最终的胜利者
SMT与PCBA的通孔的优缺点
性能再进化!Station P2S 迷你AI主机
数字移动电源SoC芯片的特点优势及应用
车规MCU和IGBT交货时间依然在延长
68美元Win8平板现身 7寸屏配VIA处理器
华为mate10什么时候上市?华为mate10最新消息:性能炸裂!小米6Plus对阵华为Mate10!
苹果卖不动 苹果证实屏幕问题 与亚马逊合作还盯着iPhone6换机用户
电源连接器的类型有哪些
三大晶圆代工厂商Q1成长动能强劲 晶圆代工产业迎来“开门红”
NVIDIA数组GPU助力隐私算法实现百倍加速