科技 · 创新 · 未来

Zephyr与FreeRTOS的线程优先级:核心差异

6ab1efb0a1117 - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新

如果你之前一直在用FreeRTOS,刚接触Zephyr时很容易在线程优先级这里踩坑。

6ab1efb0caf44 - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新

第一个差异很好理解

FreeRTOS:数值越大,优先级越高

Zephyr:数值越小,优先级越高

但Zephyr还有一个容易忽略的特殊设计:优先级数值同时决定线程是协作式(cooperative)还是可抢占式(preemptible)。

6ab1efb1185cf - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新

协作式线程:使用负数优先级

协作式线程会持续占用CPU,直到主动放弃CPU资源——比如阻塞、主动让出CPU、休眠或者变为非就绪状态。

即便此时有可抢占线程进入就绪态,也不能打断正在运行的协作式线程。

这就意味着你必须严格控制协作式线程的运行时长。如果它长时间占用CPU,所有等待运行的可抢占线程都会被延迟。

6ab1efb15abf3 - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新

可抢占式线程:优先级≥0

当更高优先级的可抢占线程变为就绪态时,可以抢占低优先级可抢占线程的执行。

简化后的Zephyr优先级映射:

–3协作式,优先级更高

–2协作式

–1协作式

-0可抢占式,可抢占线程里的最高优先级

-1可抢占式

-2可抢占式

-3可抢占式,优先级更低

6ab1efb19f6be - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新

重点是什么?

优先级-1的协作式线程,会阻止优先级0的可抢占线程运行,直到该协作线程主动释放CPU。并且线程的协作/抢占属性并非固定不变。运行时修改线程优先级,跨过0这个分界点时,线程的调度行为也会随之改变。

注意:如果你的需求只是临时关闭线程抢占,不要靠把线程优先级改成负数来实现。Zephyr专门提供了k_sched_lock()接口用于该场景。

所以从FreeRTOS迁移到Zephyr,绝不是简单换算优先级数字那么简单,你必须理解这些数字背后:调度器行为的控制逻辑。

在设计Zephyr应用时,你会刻意使用协作式线程,还是让应用里大部分线程都采用可抢占模式?

6ab1efb1e9397 - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新

麦克泰技术具有丰富嵌入式软件项目开发、行业应用与服务经验。今天,我们依托欧美嵌入式软件商业团队支持,提供嵌入式软件商业授权和服务。包括(不限于)SEGGER嵌入式软件开发和编程工具(J-Link/Flasher),OS分析工具Tracealyzer,WITTENSTEIN公司的SafeRTOS(FreeRTOS)、Flexible Safety RTOS(µC/OS-II MPU)以及新一代PX5 RTOS。麦克泰技术专注预认证功能安全操作系统在汽车、轨交、医疗和工业领域的应用以及RISC-V处理器嵌入式开发生态建设。我们正在以开放开源+商业软件的支持,服务产业客户,更多信息请访问www.bmrtech.com以及我们微信公众号“麦克泰技术”。

嵌入式文章推荐

6ab1efb213ec6 - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新

产品购买(麦克泰)

6ab1efb23325d - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新

产品购买(贝尼思)

6ab1efb2584d3 - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新

线上课程(网校)

欢迎关注微信公众号【麦克泰技术】,回复 “加群” 按提示可加入技术交流群


产品咨询:

北京:010-62975900

上海:021-62127690

  深圳:0755-82977971

6ab1efb278146 - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新分享、在看与点赞,至少我要拥有一个吧



6ab1efb296185 - 科技资讯 前沿科技 人工智能 芯片 5G 互联网技术 科技创新

未经允许不得转载:点森科技 - 科技资讯_数码产品_互联网观察_智能硬件 » Zephyr与FreeRTOS的线程优先级:核心差异

分享到: 生成海报