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