官术网_书友最值得收藏!

3.3 嵌入式操作系統(tǒng)組成要素及概念

嵌入式操作系統(tǒng)雖然各有不同,但是基本來講,都是針對各類硬件資源管理的,包括針對分享MCU的任務(wù)管理、消息機制、同步機制等,針對接口硬件的中斷處理,針對內(nèi)存的內(nèi)存管理、文件管理,針對網(wǎng)絡(luò)的網(wǎng)絡(luò)支持、網(wǎng)絡(luò)管理等。在深入學(xué)習(xí)嵌入式操作系統(tǒng)之前,先介紹嵌入式操作系統(tǒng)組成要素及其概念,如任務(wù)、實時、內(nèi)核、調(diào)度等。

1.任務(wù)

任務(wù)是一個抽象的概念,進程和線程都只是任務(wù)的一個特例。簡單而言,嵌入式操作系統(tǒng)中的任務(wù)是一段無限循環(huán)的代碼,在這段代碼執(zhí)行的過程中有相應(yīng)的堆棧、內(nèi)存的分配。

每種特定的嵌入式操作系統(tǒng)都有自己的描述單位。例如,Windows CE中以進程為基本單位來描述資源,每個進程一旦運行,操作系統(tǒng)要為其開辟相應(yīng)的內(nèi)存空間,供其進行臨時數(shù)據(jù)存儲等操作。線程則被MCU實際調(diào)度,是調(diào)度的實體。一個進程創(chuàng)建之后,同時將創(chuàng)建一個主線程。可以在主線程中創(chuàng)建該進程的其他線程。進程可以被視為線程的容器。一個線程默認的棧大小為64KB,也可以在創(chuàng)建線程的時候自定義棧的大小。同一個進程中,一個線程分配的內(nèi)存,可以被其他線程所訪問。不同進程中的線程如要互相訪問,則需要通過進程間通信來處理。在Symbian操作系統(tǒng)中,每個進程都有一個或多個線程。線程是執(zhí)行的基本單位。Linux中線程和進程則更加含混,都使用任務(wù)這個結(jié)構(gòu)來描述。

比較線程和進程,總的來說,進程的描述粒度較大,涉及內(nèi)存空間的劃分,不涉及具體微處理器的寄存器等,離硬件的距離比線程遠。線程在運行時涉及具體寄存器等保存和上下文環(huán)境切換,由微處理器進行調(diào)度,與微處理器的資源聯(lián)系緊密。圖3.7(a)是單線程進程的內(nèi)存運行模式,圖3.7(b)是多線程進程的內(nèi)存運行模式。在圖中,每個線程都擁有自己的寄存器和堆棧,而每個進程只擁有自己的代碼、數(shù)據(jù)和文件。

圖3.7 單線程進程和多線程進程

2.實時

實時性是一般嵌入式操作系統(tǒng)有別于其他通用操作系統(tǒng)的一個特點。這里的實時性是指系統(tǒng)的正確性不僅取決于邏輯的運算結(jié)果正確,而且取決于結(jié)果傳遞的時間必須在時限要求內(nèi)。能支持這樣的實時性的操作系統(tǒng)稱為實時操作系統(tǒng),換句話說就是需要能為不確定發(fā)生時間的外部事件做出時間確定的反應(yīng)。好的實時嵌入式操作系統(tǒng)必須在所有情況下運行都能獲得確定的結(jié)果。這樣的操作系統(tǒng)小到10KB,大到100KB。時限必須滿足的限制稱為硬實時。如果允許偶爾地打破時限,并在這種不正常情況下還能恢復(fù)到常態(tài)即滿足時限狀態(tài),則稱為軟實時。

3.多任務(wù)

多任務(wù)是實現(xiàn)實時性的一個好方法。如果是在一個處理器上實現(xiàn)多任務(wù),則是一種多任務(wù)的偽同步方式。此時,多任務(wù)分時使用處理器,在一段時間內(nèi)看起來多任務(wù)同時使用處理器,也稱為多任務(wù)并行。這種方式需要額外的控制,如時間的劃分,當前運行任務(wù)的退出,選取任務(wù)進入處理器進行處理等。如果是多處理器,在同一時刻,多個任務(wù)可以運行在多個處理器上,但是需要額外的控制機制來保證任務(wù)運行整體的確定性。多處理器上的多任務(wù)目前仍在研究階段。

對于單處理器的這種多任務(wù)同步的實時性,需要考慮任務(wù)從微處理器換入、換出的時間。而進程的概念比較大,這種換入、換出所涉及的內(nèi)容太多,無法滿足實時的要求。為此,在多任務(wù)的系統(tǒng)中常常使用線程作為基本單元。這也就是現(xiàn)在對于實時系統(tǒng)只提及任務(wù)或者線程的原因。

4.任務(wù)狀態(tài)及轉(zhuǎn)化

嵌入式操作系統(tǒng)中任何任務(wù)一般都處于以下三種狀態(tài)(見圖3.8)。

運行態(tài)(Running):此任務(wù)正占有微處理器并正在獲得執(zhí)行。在單處理器系統(tǒng)中,某一個時刻僅有一個任務(wù)在運行。

就緒態(tài)(Ready):此任務(wù)已獲得所有可擁有處理器來運行的條件,而此時某個其他任務(wù)正占有微處理器,此任務(wù)必須等著微處理器空閑。

阻塞態(tài)(Blocked):此任務(wù)還不具備一些條件,此時就算處理器分給該任務(wù)也無法運行。任務(wù)在此狀態(tài)下意味著在等待一些外部事件,如在等網(wǎng)絡(luò)傳來數(shù)據(jù),而數(shù)據(jù)還沒有到達的情況。

圖3.8 任務(wù)狀態(tài)圖

5.內(nèi)核

嵌入式操作系統(tǒng)中有一部分功能是所有操作系統(tǒng)都有并構(gòu)成操作系統(tǒng)的核心部分,縱使如何裁剪系統(tǒng),也無法去掉的,稱為內(nèi)核。一般內(nèi)核可以按功能分為幾塊:任務(wù)調(diào)度、消息處理、內(nèi)存管理、中斷處理、時間管理。

6.調(diào)度

調(diào)度是嵌入式操作系統(tǒng)的靈魂。所謂調(diào)度包括兩個大概念和一個小概念。第一個大概念是指如何分配微處理器給就緒的任務(wù)的換入策略,第二個大概念是指正在占有微處理器的任務(wù)的換出策略。小概念是指當有正在執(zhí)行的任務(wù)被中斷換出時,中斷結(jié)束后是回到剛才的任務(wù)還是重新選擇,也就是搶占還是不搶占的調(diào)度問題。

在就緒狀態(tài)等待微處理器的任務(wù)不止一個,到底誰能占有微處理器而進入處理狀態(tài),是需要策略的。最簡單的換入策略如先進先出,誰先到達就緒狀態(tài),就先分微處理器給誰。但是在嵌入式操作系統(tǒng)中一般采用基于優(yōu)先級分配的策略。所謂優(yōu)先級分配策略就是每個任務(wù)根據(jù)重要程度分配其優(yōu)先級別,哪個就緒任務(wù)的優(yōu)先級高,哪個任務(wù)就可以占有微處理器。

正在執(zhí)行的任務(wù)何時換出?任務(wù)執(zhí)行完自然會換出。但是一般任務(wù)都是一段循環(huán)代碼,執(zhí)行起來會進入反復(fù)操作,為此給每個任務(wù)分配時間,又稱分配的時間片。該任務(wù)的處理時間用完了,也就是該換出的時候了。另外按照優(yōu)先級的思路,如果有比正在運行的任務(wù)優(yōu)先級更高的任務(wù)到了就緒狀態(tài),正在運行的任務(wù)也該讓出微處理器,此時也需要換出。

特殊的是中斷,中斷是來自硬件的信號,必須及時處理。一般中斷到達后,當前在運行的任務(wù)需要換出,讓出處理器給中斷使用。中斷處理后返回剛才被中斷的任務(wù),稱為非搶占式調(diào)度。中斷處理后所有任務(wù)重新按換入策略選擇,稱為搶占式調(diào)度。

主站蜘蛛池模板: 沐川县| 南岸区| 房产| 临城县| 红桥区| 浦东新区| 芷江| 柘城县| 酒泉市| 潜江市| 莫力| 丰顺县| 塘沽区| 长治市| 桂东县| 磐安县| 定陶县| 泾川县| 定结县| 桓仁| 定日县| 福泉市| 乐至县| 马关县| 扶绥县| 湖南省| 墨脱县| 新巴尔虎右旗| 尉氏县| 台州市| 酉阳| 神池县| 扶风县| 高淳县| 贡觉县| 集贤县| 临高县| 安徽省| 石屏县| 舟山市| 吐鲁番市|