2017-02-08 154 views
0

由於空閒任務通常用於安全消耗其他軟件不需要的CPU時間,因此如果沒有空閒任務會發生什麼? RTOS會自動創建一個嗎?此外,空閒任務除了耗費時間還有其他目的嗎?RTOS中的空閒時間

回答

0

如果沒有空閒任務會發生什麼? RTOS會自動創建一個嗎?

我懷疑是否有RTOS可以做到這一點。如果不存在空閒任務,則可運行任務的列表將爲空,並且調度程序可能會崩潰。通常,空閒線程存在的唯一最重要的原因是使可運行任務列表「永不空」。這簡化了調度程序的代碼。

此外,閒置任務除了耗費時間還有其他用途嗎?

在一些系統中,空閒任務可以執行一些低優先級活動(例如某些垃圾收集)。它還可以將內核切換到低功耗模式,特別是在嵌入式設備上。在這種情況下,當空閒任務運行時,意味着沒有更多的事情要做,所以核心可以停止並等待下一個事件(硬件中斷或超時)而不需要使用太多的功率。當下一個事件到達時,內核被硬件喚醒並處理事件。一些「正常」線程將開始運行,或者 - 如果還有其他事情沒有更多的事情 - 空閒線程將恢復並再次切換到低功耗模式。

+0

謝謝你的詳細解答! – guddu

0

如果CPU時鐘正在運行,則必須執行指令;如果沒有閒置的任務,那麼你的操作系統壞了。空閒循環是RTOS的固有部分,而不是用戶任務,所以RTOS不需要「自動創建一個」。

永不退縮的低優先級用戶任務將阻止空閒循環運行;這不一定是件好事。這樣的任務與空閒循環不同。對於任何CPU使用工具,RTOS支持的任何CPU使用工具都會報告100%的使用情況,如果這樣的任務被觸發 - 空閒循環的執行不包括CPU使用率,因爲CPU總是準備好在空閒時響應任何中斷事件 - 循環不會導致任何準備好的任務被延遲。

空閒任務或「空閒循環」通常就是這樣,並且當沒有別的事情時程序計數器被設置爲空循環。在某些體系結構中,循環可能包含一個「等待中斷」指令,停止內核執行(停止內核時鐘)以降低功耗。由於任何上下文切換都需要發生中斷,如果支持WFI,處理器可以在此循環中停止。

一些RTOS支持空閒循環的用戶掛鉤;低優先級的運行至完成功能,可在空閒循環上下文中在後臺運行。

0

空閒任務的其他用途除了消耗時間之外還有其他用途嗎?
最常見的,它做了兩兩件事:
1.垃圾(資源)收集或清理
2.啓動步驟,以降低功耗