在RTOS中空闲时间

时间:2017-02-08 04:26:23

标签: rtos

由于空闲任务通常用于安全地消耗其他软件不需要的CPU时间,如果没有空闲任务会发生什么? RTOS会自动创建吗?此外,除了消耗时间之外,空闲任务还有什么其他用途?

3 个答案:

答案 0 :(得分:0)

  

如果没有空闲任务会发生什么? RTOS会自动创建一个吗?

我怀疑是否有任何RTOS可以做到这一点。如果没有空闲任务,那么可运行任务列表将为空,调度程序可能会崩溃。通常,空闲线程存在的最重要的一个原因是使可运行任务列表#34;永不空白"。这简化了调度程序的代码。

  

此外,除了消耗时间之外,空闲任务还有什么其他用途?

在某些系统中,空闲任务可以执行一些低优先级活动(例如一些垃圾收集)。它还可以将内核切换到低功耗模式,尤其是在嵌入式设备上。在这种情况下,当运行空闲任务时,这意味着没有其他任何事情要做,因此可以停止核心并等待下一个事件(硬件中断或超时)而不使用太多电源。当下一个事件到达时,核心被硬件唤醒并处理事件。一些"正常"线程将开始运行,或 - 如果还有其他事情要做 - 空闲线程将恢复并再次切换到低功耗模式。

答案 1 :(得分:0)

如果CPU时钟正在运行,则必须执行指令;如果没有空闲任务,那么你的操作系统就会崩溃。空闲循环是RTOS的固有部分,而不是用户任务,因此RTOS不需要自动创建一个"。

永不产生的低优先级用户任务将阻止空闲循环运行;这不一定是好事。这样的任务与空闲循环不同。一方面,RTOS支持的任何CPU使用工具都会报告100%的使用情况,如果这样的任务被执行 - 不包括执行空闲循环是CPU的使用,因为CPU总是准备好在空闲时响应任何中断事件 - 循环不会导致任何就绪任务被延迟。

空闲任务,或" 空闲循环"通常就是这样,并且当没有其他事情要做时,程序计数器被设置为空循环。在一些体系结构中,循环可以包括等待中断"停止核心执行(停止计时核心)以降低功耗的指令。由于任何上下文切换都必然需要发生中断,因此如果支持WFI,则处理器可以在此循环中停止。

某些RTOS支持空闲循环的用户挂钩;低优先级的run-to-completion函数,可以在空闲循环上下文中在后台运行。

答案 2 :(得分:0)

除了消耗时间之外,闲置任务还有什么其他用途呢? 最常见的是,它做了两件事:
1.垃圾(资源)收集或清洁
2.启动降低功耗的步骤