|
本文檔以ARM9(三星 2410/2440)為平臺,介紹一個多任務搶占式調度器------搶占式任務調度,提供延時,掛起,恢復任務操作。最精簡化,沒有加入信號量郵箱等同步通信機制。只實現一個基本任務調度器的功能。
雖然不能稱為操作系統,但已體現了小型嵌入式操作系統的精髓。OS代碼不到1.5K,核心函數只有幾個,思路簡單明了。比起 UCOS,更適合用作多任務系統原理的學習入門。 對初學者來說,看UCOS的源代碼很容易迷糊。
回想初學嵌入式多任務系統時,什么都不懂,Jean J.Labrosse 的經典之作《嵌入式實時操作系統 uc/osII》看得我一頭霧水。事實上,使我對多任務的原理印象最深的是網上的一篇文章----《建立一個屬于自己的AVR的 RTOS》 。
學習就應該這樣,循序漸進。把一步步把簡單的東西弄懂了,便沒有復雜的了,所謂水到渠成。
這篇文章是面對初學者的,把很多問題簡化了。希望對剛接觸嵌入式多任務系統的兄弟有所幫助。
必定存在不少 bug,歡迎指正。
51hei.png (91.44 KB, 下載次數: 131)
下載附件
2021-2-26 18:02 上傳
什么是多任務系統?
就像我們用電腦時可以同時聽歌,上網,編輯文檔等。在多任務系統中,可以同時執行多個并行任務,各個任務之間互相獨立。通過操作系統執行任務調度而實現宏觀上的“并發運行” 。從宏觀上不同的任務并發運行,好像每個任務都有自己的 CPU一樣。
其實在單一CPU的情況下,是不存在真正的多任務機制的,存在的只有不同的任務輪流使用CPU,所以本質上還是單任務的。但由于 CPU 執行速度非常快,加上任務切換十分頻繁并且切換的很快,所以我們感覺好像有很多任務同時在運行一樣。這就是所謂的多任務機制。
多任務的最大好處是充分利用硬件資源,如在單任務時(大循環結構,如大部分 51程序)遇到 delay函數時,CPU在空轉;而在多任務系統,遇到 delay或需等待資源時系統會自動運行下一個任務,等條件滿足再回來運行先前的任務,這樣就充分利用了 CPU,提高了效率。
任務有下面的特性:
l 動態性。任務并不是隨時都可以運行的,而一個已經運行的任務并不能保證一直占有CPU直到運行完。一般有就緒態,運行態,掛起態等。
運行態。一個運行態的任務是一個正在使用 CPU的任務。任何時刻有且只有一個運行著的任務。
就緒態。一個就緒態任務是可運行的,等待占有 CPU的任務釋放 CPU。
掛起態。某些條件不滿足而掛起不能運行的狀態。
|
-
51hei.png
(101.16 KB, 下載次數: 199)
下載附件
2021-2-26 18:02 上傳
-
-
簡易0S設計.pdf
2021-2-26 17:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
374.41 KB, 下載次數: 28, 下載積分: 黑幣 -5
評分
-
查看全部評分
|