gpt4 book ai didi

c - 为什么 RTOS 任务必须无限循环执行?

转载 作者:太空狗 更新时间:2023-10-29 17:00:37 27 4
gpt4 key购买 nike

您好,我是 RTOS 的新手,在我阅读的几乎所有文档中,它都表明任务必须处于无限循环中,但没有说明原因。谁能帮忙解释一下?谢谢

最佳答案

我认为“RTOS 任务必须是无限循环”的说法并不完全准确。我认为更正确的说法是“对于许多 RTOS,任务不得返回”。原因是最初调用任务的 RTOS 调度程序并非设计用于处理任务的返回。如果任务确实返回,则 RTOS 调度程序可能会断言错误。

我可以猜出许多 RTOS 调度程序不处理任务返回的几个原因。首先,无限循环是嵌入式系统中最典型的任务类型。结束的任务不太常见。其次,RTOS 调度程序可能必须更复杂才能处理返回的任务。第三,RTOS 设计者可能不想假设任务返回时应该做什么,而是希望任务设计者显式调用适当的任务终止例程。

无限循环并不是许多不允许任务返回的 RTOS 的唯一解决方案。 RTOS 可以提供一个任务终止例程,从任务列表中删除任务,这样它就不会再被调度。如果一个任务调用任务终止例程,那么这个任务就不必是一个无限循环,它也不会返回给它的调用者。 (即,RTOS 任务终止例程不会返回,因此调用它的任务也不会返回。)例如,FreeRTOS 有 vTaskDelete() 和 uC/OS-II 有 OSTaskDel() 用于删除不是无限循环的任务。

无限循环是嵌入式系统中的一种常见任务类型,因为许多嵌入式系统只是一遍又一遍地做同样的事情。许多嵌入式系统与 PC 不同,因为它们没有用户与之交互、启动和终止各种任务或应用程序。

关于c - 为什么 RTOS 任务必须无限循环执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28958389/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com