華東石油局物探研究院系統(tǒng)保障部 姜 岸
基于Linux的實時操作系統(tǒng)的研究
華東石油局物探研究院系統(tǒng)保障部 姜 岸
本文分析和研究了Linux系統(tǒng)在實時性方面存在的問題,并分析了實時系統(tǒng)的原理,以及提出了 實時Linux系統(tǒng)的系統(tǒng)結(jié)構(gòu)和應用程序的結(jié)構(gòu)。
Linux;實時操作系統(tǒng);FIFO;實時應用程序
隨著計算機性能的不斷提高,人們對計算機的數(shù)據(jù)處理能力提出了新的要求,比如在視頻數(shù)據(jù)處理,網(wǎng)絡數(shù)據(jù)處理等。因此,實時操作系統(tǒng)處理數(shù)據(jù)的效率成為當前計算機用戶關(guān)注的焦點。目前,比較流行的實時操作系統(tǒng)主要有兩大類:基于DOS的實時操作系統(tǒng)和基于UNIX操作系統(tǒng)。
基于DOS的實時操作系統(tǒng)是指在原有DOS的基礎(chǔ)上,提高其相應功能來實現(xiàn)實時操作系統(tǒng)的特性,但是,由于DOS系統(tǒng)存在單任務的缺陷,因而其只能適應于需求時間較小任務量較少的實時任務處理。
基于UNIX的操作系統(tǒng)是通過UNIX的分時系統(tǒng)設計實時操作系統(tǒng),來達到實時操作系統(tǒng)的最優(yōu)平均性能。因此,基于UNIX的實時操作成為當前主要的實時操作系統(tǒng),但其存在價格昂貴和應用開發(fā)環(huán)境匱乏的缺陷。由于Linux操作系統(tǒng)是開放源代碼的類UNIX的操作系統(tǒng),同時性能穩(wěn)定,處理數(shù)據(jù)效率高,是一款性能高價格低廉的操作系統(tǒng)。
鑒于此,基于Linux的操作系統(tǒng)來開發(fā)一個高效性能的實時操作系統(tǒng)是可行的。
實時操作系統(tǒng)的實時特性主要表現(xiàn)在以下幾方面:(1)運行期間和處理數(shù)據(jù)的高可靠性特性;(2)處理數(shù)據(jù)請求的及時特性;(3)完成數(shù)據(jù)請求和處理的時限保證特性,即實時操作系統(tǒng)必須保證在指定的數(shù)據(jù)請求的響應時間內(nèi)或者數(shù)據(jù)處理時間內(nèi)完成請求或者處理任務,具有此功能的操作系統(tǒng)也稱為硬實時操作系統(tǒng);如果沒有在數(shù)據(jù)處理請求,或者數(shù)據(jù)處理時間期限內(nèi)完成數(shù)據(jù)處理,即未能實現(xiàn)時限保證特性,此類實時操作系統(tǒng)也稱為軟實時操作系統(tǒng)。
實時操作系統(tǒng)的實時性主要體現(xiàn)在時限保證,因此,超出時限保證范圍的大小直接反映著實時操作系統(tǒng)的性能,即最壞情況??紤]到實時操作系統(tǒng)多方面的性能,所以,在設計Linux實時操作系統(tǒng)時,采用最優(yōu)平均性能來衡量操作系統(tǒng)的實時性。
Linux操作系統(tǒng)的調(diào)度問題主要是指進程調(diào)度。Linux操作系統(tǒng)的核心是不可競爭的,在規(guī)定的時間內(nèi)對進程實現(xiàn)等級優(yōu)先調(diào)度。一個等級較低的進程在調(diào)用系統(tǒng)核心進程時,則其會被操作系統(tǒng)掛起,只有當?shù)燃壐叩膬?nèi)核進程完成后,才能繼續(xù)執(zhí)行,但是,在執(zhí)行系統(tǒng)核心進程期間,其完成時間的不可預測性可能造成等待后續(xù)進程的持久掛起,進而不能滿足系統(tǒng)的實時性。
Linux操作系統(tǒng)的進程問題主要包括進程的同步和進程的互斥問題。Linux操作系統(tǒng)的進行同步和進程互斥是通過信號量來實現(xiàn)的。在信號量的使用過程中,其存在信號量的加鎖操作和解鎖操作。由于信號量的頻繁加鎖和解鎖操作會造成一定量時間的損耗,同時影響操作系統(tǒng)的實時特性。鑒此,Linux操作系統(tǒng)采用了粗粒度策略,但是仍然存在信號的加鎖和解鎖的問題,其系統(tǒng)性能較差。
與其他操作系統(tǒng)一樣,Linux操作系統(tǒng)在內(nèi)存管理方面,同樣采用虛擬內(nèi)存管理策略,即數(shù)據(jù)在處理過程中,進程會被系統(tǒng)換入內(nèi)存和換出到虛擬內(nèi)存中,頻繁的換入和換出操作會耗費大量的時間。同時,實時操作系統(tǒng)需要將一些主要的或者關(guān)鍵的進程始終運行在內(nèi)存中,但Linux不能保證這種實時要求。
Linux操作系統(tǒng)的時間問題包括時間精度問題和定時器問題。操作系統(tǒng)的時間精度的精度越高,則中斷處理就會越頻繁,進而造成耗費時間量大。另外,Linux的硬時間周期一般為100Hz,這就要求Linux的最高時間精度可以為100ms,導致某些實時響應無法在此時間精度內(nèi)完成實時響應。
Linux處理進程的互斥時,會保護臨界資源,同時會關(guān)掉中斷,但會造成優(yōu)先級別高的進行長時間的阻塞,為了解決此問題,Linux開發(fā)者對其相關(guān)的實時性進行了擴充和增加,但最終只能保證一部分的軟件實現(xiàn)實時應用。
圖1 實時Linux操作系統(tǒng)結(jié)構(gòu)圖
圖2 實時Linux系統(tǒng)應用程序結(jié)構(gòu)圖
實時Linux操作系統(tǒng)最早是由新墨西哥理工學院開發(fā)的。實時操作系統(tǒng)主要是在實時環(huán)境下進行數(shù)據(jù)的采集,數(shù)據(jù)處理等。為了實時的Linux操作系統(tǒng),開發(fā)者研究和設計了可推行的實時內(nèi)核,并將原來的Linux內(nèi)核作為一個進程與用戶實時進程同時調(diào)度,同時將Linux核心進程的等級調(diào)到最低,以便于操作系統(tǒng)的實時進程進行資源推斷,以此來保證系統(tǒng)的實時特性。用戶或者開發(fā)者可以針對實時性的具體應用來開發(fā)或者編寫實時任務,可以采用先進先出的策略來調(diào)度實時任務進程和Linux系統(tǒng)核心進程,其實時Linux操作系統(tǒng)的系統(tǒng)結(jié)構(gòu)如圖1所示。
(1)中斷模擬
針對關(guān)中斷的問題,實時Linux操作系統(tǒng)設計了一個軟件中斷模擬器,該中斷模擬器位于硬件中斷控制器與系統(tǒng)核心的中間。系統(tǒng)核心的中斷處理包括關(guān)中斷、開中斷和中斷返回。系統(tǒng)接收的全部硬件中斷都會被中斷模擬器接收并處理,當發(fā)生關(guān)中斷時,中斷模擬器進行軟件標志的清除操作;如果發(fā)生中斷,中斷模擬器則檢查軟標志是否已經(jīng)被標志為中斷處理。中斷模擬過程:首先,通過開中斷開啟中斷,并設置中斷堆棧;再次,進行中斷處理;最后,通過中斷返回調(diào)用軟中斷進行返回。
(2)實時任務
用戶可以針對實際情況,設計和編寫自己需要的實時任務并被實時系統(tǒng)所調(diào)度。在早期的處理器中,如80X86,就采用了分頁存儲技術(shù),有效地保護了各個相互獨立的實時任務,保證了運行過程中上下文切換時寄存器的修改。但是,在80486處理器中,由于采用了虛擬緩沖技術(shù),造成實時任務的切換過于頻繁,導致系統(tǒng)實時性能下降。因此,為了解決此問題,實時Linux操作系統(tǒng)采用了線程的形式來運行實時任務,減少運行地址空間和上下文切換開銷。另外,實時Linux操作系統(tǒng)通過可加載核心模塊來實現(xiàn)實時任務的加載和卸載,相比之下,比CPU上的上下文切換開銷小,提升了實時Linux操作系統(tǒng)的實時性能。
(3)任務調(diào)度
任務調(diào)度主要是負責實時系統(tǒng)中各個實時任務能夠在規(guī)定的時限內(nèi)完成數(shù)據(jù)處理。任務調(diào)度是通過實時調(diào)度器來實現(xiàn)的。大部分實時調(diào)度器都未能夠?qū)崿F(xiàn)高效率的任務調(diào)度,開發(fā)者通過修改相關(guān)參數(shù)實現(xiàn)調(diào)度。實時Linux操作系統(tǒng)規(guī)定每個進程的優(yōu)先級別,在調(diào)度過程中,根據(jù)進程的優(yōu)先級別進行搶斷運行,級別高的進程優(yōu)秀于級別低的進程運行,每過一個實時時間片,任務調(diào)度器都會執(zhí)行一次新的任務調(diào)度。同時,實時Linux操作系統(tǒng)還有其他實時調(diào)度算法,如時限優(yōu)先算法,即運行時間越短,越優(yōu)先;最早時限優(yōu)先算法等。
(4)時間精度
時間精度的誤差會直接影響實時系統(tǒng)的進程調(diào)度。如果偏差過大容易引起任務釋放抖動,將對實時任務構(gòu)成影響。在一般的操作系統(tǒng)中,采用時間周期調(diào)度任務。在實時Linux操作系統(tǒng)中,對任務調(diào)度的周期進行了改善,根據(jù)當前的系統(tǒng)時間和當前運行的實時任務需求的時間來決定時鐘中斷周期,從而使實時系統(tǒng)在處理實時任務的效率方面有較高的提升。尤其是在80486芯片以上的計算機上,時間精度反映出來的實時速度和效率會更高、更快。
(5)通信機制
實時Linux系統(tǒng)在進程通信過程中采用先進先出策略,并且定義實時先進先出數(shù)據(jù)結(jié)構(gòu),以便于進程的建立、釋放、讀操作和寫操作,其中讀寫操作為原子操作,是不能被掛起的,能夠有效防止進程優(yōu)先級的倒置問題。實時Linux系統(tǒng)在調(diào)度實時任務時,也可以根據(jù)UNIX修過過的任務調(diào)度機制Sysem V IPC來實現(xiàn)任務調(diào)度,比如先進先出管道,消息隊列等。
實時Linux系統(tǒng)的應用程序在開發(fā)之前,實時應用程序開發(fā)者應當首先分析其運行環(huán)境,并把應用軟件分為兩部分:普通部分和實時部分。實時部分的設計要求簡單,且只負責實時任務處理;而普通部分負責數(shù)據(jù)處理。實時Linux系統(tǒng)的實時應用程序的典型的數(shù)據(jù)流如圖2所示。
實時Linux系統(tǒng)是在原來普通操作系統(tǒng)的基礎(chǔ)上進行相應的改善,在獲得實時特性的同時,其還保留著對普通操作系統(tǒng)的兼容。針對普通操作系統(tǒng)存在的中斷、進程調(diào)度和通信等問題進行了針對性的分析,同時針對實時系統(tǒng)的實時性,提出了一些相應的解決辦法,并對實時應用軟件進行了結(jié)構(gòu)分析。希望本文能夠?qū)M一步研究如何保證實時系統(tǒng)的QOS,提供重要的參考。
[1]趙龍.對UNIX實時擴充的一點研究[J].計算機工程與科學,2005,11.20(4):76-80
[2]郭杰.基于Linux實時操作系統(tǒng)的分析和設計[D].碩士學位論文,2006
[3]李明.基于Linux的實時控制系統(tǒng)的調(diào)度算法研究[J].計算機工程與科學,2005(11):45-46
[4]須文波.歐愛輝基于RTAI-Linux的實時操作系統(tǒng)的分析與研究[J],現(xiàn)代計算機,2003(5):5-6
姜岸(1988—),女,江蘇南京人,大學???,主要研究方向:計算機linux。