周山
[摘要]Linux的出現(xiàn),更激發(fā)了人們對計算機科學(xué)技術(shù)探索研究的熱情。Linux通過它獨有的特點,慢慢的進入了嵌入式Linux研究的時代但在系統(tǒng)的實時性能方面,Linux表現(xiàn)出很多不足的地方,這直接影響了Linux在嵌入式系統(tǒng)方面的研究。而影響Linux實時性的原因主要就是由于Linux內(nèi)核具有的不可搶占性。因此,我們還要通過計算機的相關(guān)科學(xué)技術(shù)改善Linux的實時性能,這不僅為Linux的發(fā)展提供廣闊的前景,對嵌入式應(yīng)用程序的研究也有重要意義。
[關(guān)鍵詞]Linux內(nèi)核;可搶占性;實時性能
[中圖分類號]F224-39 [文獻標(biāo)識碼]A [文章編號]1672-5158(2013)06-0034-01
在對Linux系統(tǒng)的應(yīng)用逐漸普及的今天,大家仍然在不斷尋找改進Linux實時性能的方法,使Linmx充分利用它的優(yōu)勢在嵌入式系統(tǒng)的開發(fā)中發(fā)揮它的潛力。隨著Linux不斷被引入實時領(lǐng)域,很大程度上吸引了計算機技術(shù)研發(fā)人員的眼球。而在Linux的設(shè)計中,它的內(nèi)核是不可搶占的,雖然這對Linux的核心數(shù)據(jù)比較容易維護并且擁有良好的穩(wěn)定性,但也影響了Linux的實時性能。因此,要想改善Linux的實時性,就要先改善Linux內(nèi)核的可搶占性。
一、關(guān)于Linux實時性的研究分析
在Linux剛剛出現(xiàn)的時候,是被作為分時操作系統(tǒng)而設(shè)計實現(xiàn)的,所以Linux并不適應(yīng)實時操作系統(tǒng)的要求。主要表現(xiàn)在這樣幾點上:第一,Linux系統(tǒng)的內(nèi)核設(shè)計為不可搶占。所謂不可搶占就是核心作業(yè)具有任務(wù)的最高級,只有當(dāng)它完成后,系統(tǒng)才會調(diào)度其它進程。因此在進程請求系統(tǒng)調(diào)用的過程中,可能會造成進程阻塞,無法有效的調(diào)用實時進程。第二,Linux設(shè)計中具有很多緩沖機制,這讓一些實時任務(wù)不能被及時執(zhí)行,影響了系統(tǒng)實時的效率。第三,Linmx的同步策略也是導(dǎo)致進程阻塞的一個重要原因,它使實時進程無法使用系統(tǒng)的臨界資源。因此,Linmx并不符合實時系統(tǒng)的要求。第四,在中斷處理機制中,實時任務(wù)往往不能得到及時的處理,從而沒有辦法保證系統(tǒng)的確定性以及可預(yù)測性。
二、實現(xiàn)Linux內(nèi)核的實時支持的方法——可搶占式內(nèi)核
為了實現(xiàn)Linux內(nèi)核的實時性,就要將Linux內(nèi)核設(shè)計為可搶占性,這樣能夠使系統(tǒng)充分響應(yīng)實時進程的請求,使實時進程得到及時的處理。所謂搶占就是指正在執(zhí)行的實時任務(wù),隨時都有可能被中斷,并通過系統(tǒng)的進程調(diào)度策略,執(zhí)行其它優(yōu)先級高的任務(wù)。可搶占式的內(nèi)核設(shè)計,保證了系統(tǒng)正確的實現(xiàn)實時調(diào)度算法。Linux內(nèi)核的可搶占性,并不代表實時任務(wù)在任何情況下都可以被優(yōu)先調(diào)度。例如,當(dāng)任務(wù)正在利用系統(tǒng)的調(diào)用來訪問系統(tǒng)中的共享數(shù)據(jù)時,就不能被其它可能使用這個數(shù)據(jù)的任務(wù)所搶占。在實現(xiàn)內(nèi)核可搶占的方法中,必須對內(nèi)核的臨界段加以保護,來防止進程的重大問題。
那么我們可以通過這樣幾種方法來實現(xiàn)Linmx搶占式內(nèi)核。(1)設(shè)置搶占點,確保內(nèi)核在這樣安全和固定的點上實現(xiàn)搶占。在改善Linux內(nèi)核的非搶占內(nèi)核時,最簡單的方法之一就是在一定的時間間隔處設(shè)置搶占點,并對在搶占點執(zhí)行的過程進行檢查。對于搶占點的設(shè)置需要要注意的是:搶占點必須在穩(wěn)定的內(nèi)核數(shù)據(jù)結(jié)構(gòu)中設(shè)置,而且內(nèi)核將要開始一個長時間并且大量的運算。(2)實現(xiàn)完全搶占,使內(nèi)核在任何時間里都能夠被其它進程搶占。雖然我們剛剛描述過有一種情況內(nèi)核是不允許被搶占的,但我們還是可以通過操作系統(tǒng)所提供的互斥機制來實現(xiàn)內(nèi)核的完全搶占。其一,不在臨界段的執(zhí)行中設(shè)置中斷;其二,通過信號量,在獲得鎖后再進入臨界段,當(dāng)離開臨界段的時候再釋放鎖。其三,在內(nèi)核的臨界段設(shè)置搶占鎖。
三、改善Linux核心可搶占性的方法研究
在改善Linmx核心可搶占性方面的研究,要從兩個方向著手:一方面是中斷管理的改進,另一方面是互斥鎖的改進。它們之間不僅有著密切的聯(lián)系,而且還相互影響。
(一)對中斷管理進程化的研究
在系統(tǒng)設(shè)計中,實現(xiàn)中斷管理的高效和可靠是設(shè)計的關(guān)鍵。如果在中斷管理的設(shè)計上存在缺陷,不僅會造成進程不必要的等待,還會讓系統(tǒng)的整個任務(wù)都出現(xiàn)處理延滯,降低了系統(tǒng)的效率。Linux系統(tǒng)設(shè)計中采用了宏內(nèi)核,所以Linux操作系統(tǒng)表現(xiàn)出易于實現(xiàn)的優(yōu)勢,這在目前仍然是計算機科學(xué)技術(shù)研究的一個重要方向。但宏內(nèi)核也有不足的地方,缺少了對系統(tǒng)分層的概念,不容易約束用戶程序編寫,從而導(dǎo)致一些不合理的中斷等待的現(xiàn)象。因此,要改善Linux的中斷處理。Linux通過kernel_thread函數(shù)來創(chuàng)建系統(tǒng)的核心進程,利用核心進程里所具有的task_Mstruct描述以及核心堆棧,通過它們的共同參與來對系統(tǒng)的進程進行調(diào)度,使其具有更高的執(zhí)行效率。
(二)對互斥鎖的研究
Linux中的互斥鎖是采用硬件鎖方式實現(xiàn)的,互斥鎖利用了存在于Linux核心的二元信號量(關(guān)于Linux核心的二元信號量的定義,在include/asm-i386/semaphore.h中有明確的說明)。在Linmx內(nèi)核信號量的具體實現(xiàn)中,內(nèi)核例程down()和up()與P()操作和V()操作是相對應(yīng)的。因此也可以通過直接利用內(nèi)核例程down()和up()來實現(xiàn)互斥鎖。通過二元信號量對互斥鎖機制進行的改進設(shè)計,實現(xiàn)了互斥鎖機制的高效性。與此同時,基于二元信號量的互斥設(shè)計更容易實現(xiàn)較為復(fù)雜的關(guān)于互斥鎖的協(xié)議。在某種意義上互斥鎖的實現(xiàn)和進程的調(diào)度密切相關(guān)。
結(jié)束語:本文通過對如何改進Linmx核心可搶占性的方法研究,改善了Linux核心的可搶占性,并且使Linux在實時性能上得到改善。相信通過系統(tǒng)的研發(fā)人員的共同努力,一定會在改善Linux核心可搶占性的方法上有所突破,逐漸完善Linux。
參考文獻
[1]張立,王茜竹,王朝霞,練有品,Linux內(nèi)核的進程調(diào)度原理及改進算法研究[J],后勤工程學(xué)院學(xué)報,2006(05)
[2]趙慧斌,李小群,孫玉芳,改善Linux核心可搶占性方法的研究與實現(xiàn)[J],計算機學(xué)報,2004(02)
[5]楊中良,蔣朝根,Linux內(nèi)核的可搶占性分析和研究[J]成都信息工程學(xué)院學(xué)報,2008(10)
[4]杜旭,胥海鵬,Linux操作系統(tǒng)調(diào)度器實時性能的研究與改進[J],計算機工程,2005(10)