從前后臺架構的軟件開發過渡到使用實時操作系統(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常用的調度算法,可以幫助我們做出合適的選擇。
審核編輯:湯梓紅
-
操作系統
+關注
關注
37文章
6747瀏覽量
123204 -
RTOS
+關注
關注
22文章
809瀏覽量
119453 -
實時操作系統
+關注
關注
1文章
196瀏覽量
30744 -
應用程序
+關注
關注
37文章
3245瀏覽量
57615 -
調度
+關注
關注
0文章
53瀏覽量
10756
原文標題:來了解一下RTOS應用中的調度策略
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論