摘要:本文簡單介紹了實時操作系統(tǒng)的概念,并對標準Linux操作系統(tǒng)作了分析,介紹了以Linux為基礎(chǔ)的實時操作系統(tǒng)的特點,及對標準Linux操作系統(tǒng)修改的常用方法。
關(guān)鍵詞:Linux;嵌入式;實時操作系統(tǒng)
引言
Linux操作系統(tǒng)是一個功能強大、穩(wěn)定和通用的操作系統(tǒng),它持多用戶和多進程,支持TCP/IP等網(wǎng)絡(luò)協(xié)議,具有圖形用戶界面和強大的開發(fā)工具。由于Linux代碼公開,遵循GPL條款,因此Linux越來越廣泛地應(yīng)用于嵌入實時環(huán)境中。
操作系統(tǒng)的某些方面與實時應(yīng)用密切相關(guān),例如中斷機制和細粒度定時器直接關(guān)系到對外部事件的響應(yīng)速度;內(nèi)核本身是否被搶占關(guān)系到實時任務(wù)是否可及時占有系統(tǒng)資源;實時調(diào)度策略決定了實時操作系統(tǒng)可應(yīng)用的范圍和處理器利用率。
實時操作系統(tǒng)所遵循的設(shè)計原則是:采用各利,算法和策略,始終保證系統(tǒng)行為的可預測性??深A測性是指在系統(tǒng)運行的任何時刻,在任何情況下實時操作系統(tǒng)的資源調(diào)配策略都能為多個實時任務(wù)合理分配資源,使每個實時任務(wù)的實時性要求都能得到滿足。
Linux與嵌入式實時操作系統(tǒng)
實時操作系統(tǒng)是指一個能夠在指定時間內(nèi)完成特定功能或者對外部的異步事件做出響應(yīng)的操作系統(tǒng)。
嵌入式實時操作系統(tǒng)要求快速、可預測等特點,必須保證實時任務(wù)在要求時間內(nèi)完成。現(xiàn)有的Linux是一個通用的操作系統(tǒng),盡管它采用了許多技術(shù)來加快系統(tǒng)的運行和反應(yīng)速度,但是它本質(zhì)上不是一個嵌入式實時操作系統(tǒng),不能直接應(yīng)用于嵌入式實時環(huán)境。Linux是通用的操作系統(tǒng),通用操作系統(tǒng)的設(shè)計原則是最大限度地利用各種資源,盡量公平地調(diào)度各個進程,以獲得最佳的整體性能,因此將Linux應(yīng)用于嵌入式實時環(huán)境有以下幾點制約因素:
1.Linux的核心態(tài)進程是不能被搶先的。
2.Linux的進程調(diào)度方式不是完全搶先式的。
3.Linux內(nèi)核的進程經(jīng)常關(guān)閉中斷以盡快完成自己的任務(wù)。
4.Linux采取了“虛擬內(nèi)存”的內(nèi)存管理方式。
5.在Linux中,高優(yōu)先級的進程不能搶占低優(yōu)先級進程的資源。
Linux內(nèi)核實時化方法
獨立核方法
Linux實時系統(tǒng)的獨立核方法是指設(shè)計一種完全獨立的實時核心,但其API與Linux核心相兼容。這種方法的理論基礎(chǔ)是必須在其設(shè)計之初就要充分考慮系統(tǒng)的實時性要求。這種方法的局限性是由于設(shè)計了一個完全獨立的實時核心而沒有使用原有的Linux核心,導致了Linux系統(tǒng)的一些優(yōu)勢難以繼承。另外,由于這種方法并沒有通過修改Linux核心代碼來開發(fā)實時核心,而是在Linux系統(tǒng)之上重新設(shè)計了一個核心,這樣的開發(fā)并不要求源代碼開放,因此Linux一些基于開放源代碼的優(yōu)勢也會受到影響。
雙核方法
這種方法在同—硬件平臺上采用了兩個相互配合,共同工作的系統(tǒng)核心,一個核心提供精確的實時多任務(wù)管理,另一個核心提供復雜的非實時通用功能。這種方法是通過在Linux操作系統(tǒng)的最底層增加一層實時核心層來實現(xiàn),實時核心層負責硬件管理并提供實時任務(wù)管理。
這種方法的關(guān)鍵所在是運行在常規(guī)Linux核心上的所有非實時任務(wù)必須是支持可搶占式調(diào)度,這樣才能做到對實時核心提供精確實時保證而不受到任何影響。由于實時核心非常小,并不會增加整個系統(tǒng)的負載,所有這些對開發(fā)實時性要求嚴格的實時軟件都提供了有力保障。這種方法的缺點是南于實時任務(wù)的開發(fā)是直接而向提供精確實時服務(wù)的小實時核心的,而并非功能強大的常規(guī)Linux核心實時任務(wù)是運行在系統(tǒng)核心層的,這就意味著這些實時任務(wù)可以運行在沒有內(nèi)存保護的級別之上,因此一個實時任務(wù)的錯誤可能會導致整個系統(tǒng)的癱瘓。
修改核方法
這種方法是基于已有Linux系統(tǒng)對實時軟件開發(fā)的支持,進行源代碼級修改而使Linux變成一個真正的實時操作系統(tǒng)。任何基于Linux核心源代碼的修改都要遵循GPL協(xié)議,對所有軟件人員開放源代碼。
資源核方法
這種方法是為解決傳統(tǒng)實時操作系統(tǒng)中固定優(yōu)先級搶占式調(diào)度策略的局限性而產(chǎn)生的。同定優(yōu)先級搶占式調(diào)度算法沒有任務(wù)間的臨時保護,因此可預見的任務(wù)響應(yīng)時間依賴于對所有更高優(yōu)先級任務(wù)執(zhí)行時間的預測。在很多實時應(yīng)用中更希望實時系統(tǒng)可以根據(jù)應(yīng)用程序獲得資源,動態(tài)地調(diào)整任務(wù)屬性,以求得到最優(yōu)的效果。資源核方法是一種以資源為中心來指導實時核心提供精確的、有保證的、可搶占的獲取系統(tǒng)資源的方法。這種方法的優(yōu)點是系統(tǒng)具有很好的健壯性、可精確預見的實時性,而且允許應(yīng)用程序根據(jù)實際情況動態(tài)調(diào)整自身屬性。
嵌入式實時操作系統(tǒng)
Linux操作系統(tǒng)在進入內(nèi)核空間時不能發(fā)生進程切換,如果單一對關(guān)鍵資源加鎖,然后強行進行調(diào)度,可以實現(xiàn)實時化,但是關(guān)鍵資源數(shù)量巨大,加鎖管理的協(xié)調(diào)難度也比較多。另外,以前的操作系統(tǒng)將功能過于復雜化,而一些嵌入式操作系統(tǒng)又使功能過于專一,不利于系統(tǒng)的擴張。所以對于操作系統(tǒng)比較理性的評估是,操作系統(tǒng)只需要完成以下功能:進程切換、關(guān)鍵資源管理、中斷管理和消息傳遞。對于操作系統(tǒng)內(nèi)核而言,只存在進程和線程,而進程直接的服務(wù)和要求,都是以消息的形式通過內(nèi)核來傳遞。南于內(nèi)核只負責消息傳遞、資源審批和進程切換,因此內(nèi)核改變了以前一次要把工作負責到底的方式。
進程申請內(nèi)核服務(wù)通過系統(tǒng)調(diào)用的方式,系統(tǒng)調(diào)用的主要傳遞對象是服務(wù)消息,內(nèi)核在收到服務(wù)消息后根據(jù)類型作以下幾種處理。
1.關(guān)鍵資源的初始化、申請和釋放消息:微內(nèi)核把消息轉(zhuǎn)交給資源管理器,讓資源管理器對消息操作的合法性作出相應(yīng)的操作。
2.進程服務(wù)消息:微內(nèi)核將消息轉(zhuǎn)交給相應(yīng)的進程。
3.進程調(diào)度消息:微內(nèi)核根據(jù)消息的內(nèi)容來進行進程的調(diào)度操作。
當有中斷發(fā)生的時候,微內(nèi)核進人中斷管理器作相應(yīng)的處理。
消息格式為:
Street message
(
Long mtype;//消息類型
Void*data//傳遞數(shù)據(jù)的指針
)
在操作系統(tǒng)中設(shè)計一個中斷管理器,主要任務(wù):中斷線程的生成、管理和注銷。
每個進程的進程控制塊中在初始化時都有一個指針指向資源管理器,每個進程在進入內(nèi)核態(tài)的時候都通過系統(tǒng)堆棧找到自己的進程控制塊,然后取得資源管理器的入口,每次在需要進行系統(tǒng)關(guān)鍵資源的操作時都通過資源管理器來協(xié)調(diào)。資源管理器在對每個特定資源操作的時候不是把操作一次做完,而是把操作細化,每做完一個動作后就觀察有沒有發(fā)生資源競爭所引起的調(diào)度,如果有就把控制權(quán)交給微內(nèi)核。當一個進程通過資源管理器對一個資源操作發(fā)生沖突的時候,資源管理器就會做出調(diào)解,使占有資源的進程得到比較高的優(yōu)先級,并且通知這個占有資源的進程,如果沒有未完成的操作就完成并釋放資源,如果沒有開始操作那就釋放資源并通知內(nèi)核發(fā)生調(diào)度。
結(jié)論
Linux是一個性能卓越,技術(shù)上處于前沿的操作系統(tǒng),但作為一個通用的操作系統(tǒng)在實時性方面有其不足,這就使在一些實時性要求較高環(huán)境中,就要對Linux做進一步改進。
實時操作系統(tǒng)模型的建立是在對Linux操作系統(tǒng)軟件結(jié)構(gòu)的一個改進,也就是操作系統(tǒng)發(fā)生本質(zhì)的變化,但是內(nèi)核的外殼沒有發(fā)生變化,也就是說代碼的對外接口還是沿用Linux操作系統(tǒng)的接口標準。但是Linux的實時化設(shè)計是一個任重而道遠的任務(wù),為了國家安全和信息獨立化,必須開發(fā)出一個全新的操作系