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