紅黑樹 基于優(yōu)先級的時間片輪轉(zhuǎn)
linux調(diào)度算法的核心思想是什么,麻煩給回復(fù)
紅黑樹 基于優(yōu)先級的時間片輪轉(zhuǎn)
第一部分:實時調(diào)度算法什么是實時系統(tǒng),POSIX 1003.b作了這樣的定義:是指系統(tǒng)可以在有限響應(yīng)時間內(nèi)提供所需的服務(wù)級別。較可取被定義為由Donald喬利士的的:一個實時系統(tǒng)的程序的邏輯正確性不僅取決于計算的準確度,而且還對結(jié)果,如果系統(tǒng)時間的限制不能滿足將是一個系統(tǒng)錯誤發(fā)生。 基于實時系統(tǒng)的實時性要求的不同,可分為軟實時和硬實時兩種。硬實時系統(tǒng)是指系統(tǒng)必須確保,在最壞情況下的服務(wù)時間,截止日期為事件的響應(yīng)時間是在任何情況下,必須滿足。如航天飛船的控制是這樣一個系統(tǒng)的現(xiàn)實。所有其他實時系統(tǒng)的特點,可以稱為軟實時系統(tǒng)。如果清除,軟實時系統(tǒng)是那些從統(tǒng)計學(xué)的角度來看,一個任務(wù)(在下面的討論中,我們將有任務(wù)和過程不作出區(qū)分),以確保系統(tǒng)的處理時間,可以得到事件可以處理的最后期限到來之前,違反的最后期限,并不會帶來一個致命的錯誤,如實時多媒體系統(tǒng)是一種軟實時系統(tǒng)。 一臺電腦系統(tǒng)的CPU和其他資源進行有效的調(diào)度和管理,以提供實時操作系統(tǒng)的支持。的多任務(wù)的實時系統(tǒng)中,資源的調(diào)度和管理更復(fù)雜的。下面討論本文將從各種實時任務(wù)調(diào)度算法的分類的角度來看,普通的Linux操作系統(tǒng)進程調(diào)度和各種實時Linux系統(tǒng),然后研究,以支持實時特點,普通的Linux系統(tǒng)的改進。實時領(lǐng)域的一些問題,并總結(jié)了各種實時Linux的Linux操作系統(tǒng),歸根到底是如何解決這些問題。 CPU的實時調(diào)度算法的分類多種實時操作系統(tǒng)的實時調(diào)度算法可以分為以下三類Wang99] [Gopalan01]:基于優(yōu)先級調(diào)度算法(優(yōu)先級驅(qū)動調(diào)度PD),基于在共享的CPU使用率調(diào)度算法(分享驅(qū)動調(diào)度SD)的比例,以及基于時間的進程調(diào)度算法(時間驅(qū)動調(diào)度TD),下面這三種調(diào)度算法逐一介紹。 1.1/>基于優(yōu)先級的調(diào)度算法,基于優(yōu)先級的調(diào)度算法,每個進程被分配一個優(yōu)先級,每次的進程調(diào)度程序,調(diào)度程序總是具有最高的調(diào)度優(yōu)先級的任務(wù)執(zhí)行。根據(jù)不同的優(yōu)先級分配方法,基于優(yōu)先級的調(diào)度算法可以分為以下兩種類型的Krishna01] [Wang99]:靜態(tài)優(yōu)先級調(diào)度算法 該算法得到這些系統(tǒng)中運行的所有進程都靜態(tài)分配一個優(yōu)先級。靜態(tài)優(yōu)先級分配的屬性的應(yīng)用程序,如任務(wù)循環(huán)中的用戶優(yōu)先級,或其他預(yù)先確定的政策。 RM(速率單調(diào))的調(diào)度算法是一個典型的靜態(tài)優(yōu)先級的調(diào)度算法,根據(jù)執(zhí)行的任務(wù)的調(diào)度優(yōu)先級的周期的長度確定,那些具有小的執(zhí)行周期的任務(wù)的優(yōu)先級較高。 動態(tài)優(yōu)先級調(diào)度算法:該算法基于任務(wù)的資源需求動態(tài)地分配任務(wù)的優(yōu)先級,資源分配和調(diào)度的目的更大的靈活性。非實時系統(tǒng),這種算法有很多,如短作業(yè)優(yōu)先級調(diào)度算法。任務(wù)的實時調(diào)度算法,EDF算法是使用最廣泛的動態(tài)優(yōu)先級調(diào)度算法,該算法根據(jù)他們的截止日期(截止日期)分配優(yōu)先級的就緒隊列中的每個任務(wù),最近期限具有最高的優(yōu)先級。 1.2 基于優(yōu)先級調(diào)度算法的調(diào)度算法是簡單而有效的,但這種算法的基礎(chǔ)上按比例份額是一個硬實時調(diào)度,許多的情況下,不適合使用此算法:例如,軟實時應(yīng)用,如實時多媒體會議系統(tǒng)。對于軟實時應(yīng)用程序,共享資源調(diào)度算法(SD算法)的比例使用是更合適的。 比例共享調(diào)度算法是指對CPU使用率的比例共享調(diào)度算法,其基本思路是按照一定的權(quán)重(比率),需要一組調(diào)度安排任務(wù),以使它們的權(quán)重成比例的執(zhí)行時間。 要實現(xiàn)比例共享調(diào)度算法[Nieh01]有兩種方法:第一種方法是調(diào)整的準備過程中出現(xiàn)的調(diào)度隊列隊第一頻率,并安排一線隊的過程中,執(zhí)行第二種方法是連續(xù)調(diào)度進程就緒隊列中投產(chǎn),但根據(jù)調(diào)整分配一個進程的運行時間片分配的權(quán)重。 比例共享調(diào)度算法可以分為以下類別:循環(huán)賽,公平份額,公平排隊,的彩票調(diào)度方法,(彩票)。 比例共享調(diào)度算法的一個問題是,它并沒有定義任何優(yōu)先的概念,所有的任務(wù)都根據(jù)其應(yīng)用的CPU資源的比例共享系統(tǒng)過載時,執(zhí)行的所有任務(wù)將較慢比例。因此,為了確保該系統(tǒng)的實時過程中獲得一定量的CPU處理時間,一般采用的是動態(tài)權(quán)重的調(diào)整過程。 1.3。基于時間進程調(diào)度算法的調(diào)度算法對于那些具有穩(wěn)定,簡單的系統(tǒng)已知輸入,您可以使用時間驅(qū)動(驅(qū)動時間時間:TD)數(shù)據(jù)處理,它可以提供一個良好的預(yù)測。這種調(diào)度算法本質(zhì)上是一個設(shè)計定型的離線靜態(tài)調(diào)度方法。在系統(tǒng)的設(shè)計階段,所有處理的情況下,在明確的制度,每個任務(wù)切換的開始和結(jié)束的時間提前做出了明確的安排和設(shè)計。該算法是適用于小型嵌入式系統(tǒng),自動化控制系統(tǒng),傳感器和其他應(yīng)用環(huán)境。 該算法的優(yōu)勢是良好的可預(yù)測性任務(wù)的執(zhí)行,但最大的缺點是缺乏靈活性,而且會有一個任務(wù)需要執(zhí)行,而CPU保持空閑。 一般的Linux系統(tǒng)CPU調(diào)度一般的Linux系統(tǒng)支持實時和非實時兩種進程,實時進程與普通進程方面具有絕對的優(yōu)先權(quán)。相應(yīng)地,實時進程調(diào)度策略SCHED_FIFO或SCHED_RR,普通進程SCHED_OTHER調(diào)度策略。 每個任務(wù)調(diào)度算法的實現(xiàn)在Linux四種調(diào)度參數(shù),它們是rt_priority優(yōu)先政策(尼斯),計數(shù)器。調(diào)度進程調(diào)度的基礎(chǔ)上,這四個參數(shù)。 SCHED_OTHER調(diào)度策略,調(diào)度程序總是會選擇優(yōu)先級+計數(shù)器的值進程調(diào)度的執(zhí)行。從邏輯分析存在SCHED_OTHER調(diào)度策略調(diào)度處理來執(zhí)行,其特征在于,所述優(yōu)先級是一個固定的調(diào)度周期(歷元),在每個調(diào)度周期內(nèi)的過程中的優(yōu)先級,計數(shù)器的值的大小的影響這一刻已經(jīng)確定變量值的過程中被創(chuàng)建時,它代表了進程的優(yōu)先級,也代表數(shù)量的時間片,通過該方法可以得到在每個調(diào)度周期內(nèi),計數(shù)器是一個動態(tài)值,它反映了當前調(diào)度周期的過程中,剩余的時間片。在每個調(diào)度周期的開始,分配給優(yōu)先級值計數(shù)器,那么每一次進程被調(diào)度運行計數(shù)器的值?減少。當計數(shù)器的值是零,這個過程已經(jīng)運行的時間片調(diào)度期內(nèi),不再參與調(diào)度周期進程調(diào)度。當所有的進程都用完了時間片調(diào)度期結(jié)束,然后一遍又一遍。此外,可以看出在Linux系統(tǒng)中的調(diào)度周期是不固定的,它的量是動態(tài)變化的,例如,在運行的進程的數(shù)目和它們的優(yōu)先級值?可以影響一個劃時代的長度。有一點值得注意的是,在2.4內(nèi)核中,首要任務(wù)是不錯的替換兩個類似的作用。 按比例分擔的調(diào)度策略調(diào)度策略SCHED_OTHER可見的性質(zhì),它的這種設(shè)計方法,以確保進程調(diào)度的公平性 - 一個低優(yōu)先級進程,在每個時代也將得到他們的份額那些CPU的執(zhí)行時間,此外,它也提供了不同的進程的優(yōu)先級,進程執(zhí)行時間可以得到更多的具有高優(yōu)先級值。 對于實時的過程中,他們使用基于實時優(yōu)先級rt_priority的優(yōu)先級調(diào)度策略,但相同的實時優(yōu)先級的進程調(diào)度方法是根據(jù)不同的調(diào)度策略,BR /> SCHED_FIFO:不同的進程,根據(jù)靜態(tài)優(yōu)先級排隊,然后在相同的優(yōu)先級隊列,先準備好運行的第一誰調(diào)度和運行的進程不會被終止,直到發(fā)生以下情況:1。高優(yōu)先級的進程篡奪了CPU;自己的資源請求受阻;自己主動放棄CPU(呼叫SCHED_YIELD); SCHED_RR是這樣的:這個調(diào)度策略SCHED_FIFO與上述完全相同,除了時間片分配給每個進程,正在實施的過程中,給執(zhí)行時間片,時間片的長度可以通過sched_rr_get_interval調(diào)用由于Linux系統(tǒng)本身是一個桌面導(dǎo)向的系統(tǒng),因此,它是用于在實時應(yīng)用中的一些問題:/> /> Linux系統(tǒng)調(diào)度單位是10ms,所以它不能提供精確的定時中斷; p>當一個進程調(diào)用系統(tǒng)調(diào)用進入內(nèi)核模式運行,它不能被搶占; Linux內(nèi)核實現(xiàn)大量采用了封閉中斷操作損失; 由于使用虛擬內(nèi)存技術(shù),當發(fā)生頁面錯誤時,從硬盤中讀取的數(shù)據(jù)交換的需要,但硬盤讀取和寫入的存儲位置的隨機性,將導(dǎo)致隨機讀取和寫入時間,這在某些情況下,會影響實時任務(wù)期限;雖然Linux的進程調(diào)度器還支持實時優(yōu)先級,但由于缺乏有效的實時任務(wù)調(diào)度機制和調(diào)度算法;其網(wǎng)絡(luò)子協(xié)議處理和其它設(shè)備的中斷處理,調(diào)度伴有相應(yīng)的過程和自己的有沒有明確的調(diào)度機制; 各種實時Linux系統(tǒng) Home>的的 3.1 RT-Linux和RTAI RT-Linux是新墨西哥大學(xué)的研究(新墨西哥州技術(shù)學(xué)院)[RTLinuxWeb] [Barabanov97。其基本思路是,在Linux系統(tǒng)上的硬實時支持,它實現(xiàn)了一個微內(nèi)核實時操作系統(tǒng)(也被稱為RT-Linux的實時子系統(tǒng)),而普通的Linux系統(tǒng)作為一個低優(yōu)先級任務(wù)在操作系統(tǒng)中運行。在正常的Linux系統(tǒng)的另一個任務(wù)可以溝通,通過FIFO和實時任務(wù)。 RT-Linux的框架如圖1所示:圖1 RT-Linux的結(jié)構(gòu)RT-Linux的關(guān)鍵技術(shù)是軟件模擬硬件中斷控制器。當Linux系統(tǒng)不時阻止CPU中斷,實時定量RT-Linux的子系統(tǒng)的請求攔截,愛不釋手,而事實上并沒有真正阻止硬件中斷,從而避免了由于中斷造成的封由系統(tǒng)在一段時間內(nèi)沒有響應(yīng),從而在改進的實時。當傳遞給Linux內(nèi)核的RT-Linux的一個硬件中斷到達截取的中斷,并確定是否有一個實時子系統(tǒng)中斷例程來處理或處理。此外,的最小定時的精度在正常的Linux系統(tǒng)是確定系統(tǒng)的實時時鐘的頻率,Linux的系統(tǒng)時鐘被設(shè)置到時鐘中斷每秒100,所以在Linux的系統(tǒng)定時的精度10毫秒,即時鐘周期10ms時,RT-Linux的實時時鐘設(shè)置為單觸發(fā)狀態(tài),可以提供更多的十幾微秒調(diào)度粒度。 RT-Linux實時子系統(tǒng)的任務(wù)調(diào)度優(yōu)先級驅(qū)動算法,RM,EDF等,也可用于其他調(diào)度算法。 RT-Linux的專有系統(tǒng),重型工作,的確是一個不錯的選擇,但他只提供了CPU資源的調(diào)度和實時系統(tǒng)和Linux系統(tǒng)的關(guān)系不是非常密切,因此開發(fā)人員可以充分利用已在Linux系統(tǒng)中,如協(xié)議棧實現(xiàn)的功能。 RT-Linux的工業(yè)控制等實時任務(wù)簡單和硬實時要求的環(huán)境,但大量的工作需要做,如果你想應(yīng)用的多媒體處理。 意大利實時應(yīng)用程序接口(RTAI)來自RT-Linux的,它是在設(shè)計和RT-Linux的思想相同。這是原來的設(shè)計中,為了解決問題,RT-Linux的不同版本的Linux之間很難很難移植,RTAI在Linux上定義的實時硬件抽象層,這個抽象層接口提供實時任務(wù)Linux系統(tǒng)的相互作用,這可以增加一點可以Linux內(nèi)核源代碼到Linux內(nèi)核的實時支持。 3.2。 KURT-Linux的KURT-Linux的堪薩斯大學(xué)開發(fā)的,它可以提供實時微秒精度[KurtWeb] [斯里尼瓦桑]。與RT-Linux的單獨實現(xiàn)一個實時內(nèi)核,KURT-Linux是常用的Linux系統(tǒng)的基礎(chǔ)上實現(xiàn)的,這也是第一個基于Linux的實時系統(tǒng)可以使用普通的Linux系統(tǒng)調(diào)用。 KURT-Linux系統(tǒng)分為三種狀態(tài):正常狀態(tài),實時狀態(tài)和混合狀態(tài),在正常狀態(tài)下,它使用普通的Linux實時運行狀態(tài)實時調(diào)度策略任務(wù),實時和非實時任務(wù)的混合狀態(tài),可以執(zhí)行實時狀態(tài)可以被用來為實時的要求更加嚴格。 為了提高Linux系統(tǒng)的實時特性,有必要提高精度的時鐘系統(tǒng)的支持。但是,如果只是簡單地增加時鐘頻率將導(dǎo)致調(diào)度負載的增加,從而嚴重降低系統(tǒng)的性能。為了解決這個矛盾,KURT-Linux中使用的時鐘精度的方法[UTIMEWeb]提高Linux系統(tǒng)UTIME,時鐘芯片設(shè)置為單次觸發(fā)狀態(tài)(單拍模式),也就是每個時鐘芯片設(shè)置超時,然后再次超時事件發(fā)生時,在時鐘中斷的處理程序所需的時鐘芯片設(shè)置一個超時。其基本思想是一個精確的時間意味著我們需要的時鐘中斷發(fā)生時,我們需要一個更精確的時間,以達到這樣的精度,但并不一定需要系統(tǒng)時鐘頻率。它采用了CPU時鐘計數(shù)器時間戳計數(shù)器(TSC)提供準確的CPU頻率精度的時間。 KURT-Linux的實時任務(wù)調(diào)度,使用靜態(tài)CPU的實時調(diào)度算法,基于時間(TD)。實時任務(wù)需要實時事件發(fā)生在設(shè)計階段就必須清楚列明。該算法可以實現(xiàn)更好的調(diào)度任務(wù),對于那些誰周期。 KURT-Linux的相RT-Linux的優(yōu)勢之一是,你可以使用系統(tǒng)調(diào)用的Linux系統(tǒng),它最初是專為硬實時支持,但因為它是簡單的實現(xiàn)將使用一個簡單的時間驅(qū)動調(diào)度取代Linux的調(diào)度,實時進程調(diào)度的影響等非實時任務(wù),在某些情況下會發(fā)生實時任務(wù)的截止日期是脆弱的不符合的,也被稱為嚴格的實時系統(tǒng)(快地實時)?;贙URT-Linux的應(yīng)用程序:藝術(shù)(ATM參考交通系統(tǒng)),多媒體播放軟件。 KURT-Linux的另一種方法,需要頻繁的時鐘芯片編程。 3.3。 RED-Linux的RED-Linux是加州大學(xué)爾灣,實時Linux系統(tǒng)的發(fā)展[REDWeb] [Wang99],它將支持實時調(diào)度和Linux實現(xiàn)相同的操作系統(tǒng)內(nèi)核。它支持三種類型的調(diào)度算法,即:時間驅(qū)動優(yōu)先Dirven,分享驅(qū)動。 為了提高系統(tǒng)的調(diào)度粒度,RED-Linux的學(xué)習(xí)RT-Linux的軟件模擬中斷的管理機制,并增加頻率的時鐘中斷。 RED-Linux的中斷仿真程序只是簡單地中斷會在隊列中排隊一個硬件中斷到來時,并沒有進行實際的中斷處理程序。 另外,為了解決Linux的內(nèi)核模式的過程中不能被中斷,RED-Linux的插入Linux內(nèi)核搶占點原語的眾多功能,使這一進程在內(nèi)核模式下,也在一定程度上被搶占。通過這種方法提高了內(nèi)核的實時特性。 RED-Linux的設(shè)計目標是提供常規(guī)調(diào)度框架可以支持多種調(diào)度算法,系統(tǒng)為每個任務(wù)增加幾個屬性,進程調(diào)度的基礎(chǔ)上:優(yōu)先級:作業(yè)的優(yōu)先級; 開始時間:工作的開始時間; 完成時間:工作的結(jié)束時間; BR p>預(yù)算:資源的數(shù)量在操作過程中要使用的工作; 調(diào)整值?這些屬性和調(diào)度根據(jù)什么優(yōu)先使用的這些屬性值幾乎所有的調(diào)度算法。在這種情況下,三種不同的調(diào)度算法無縫地一起耦合到一個統(tǒng)一的。
第一部分:實時調(diào)度算法什么是實時系統(tǒng),POSIX 1003.b作了這樣的定義:是指系統(tǒng)可以在有限響應(yīng)時間內(nèi)提供所需的服務(wù)級別。較可取被定義為由Donald喬利士的的:一個實時系統(tǒng)的程序的邏輯正確性不僅取決于計算的準確度,而且還對結(jié)果,如果系統(tǒng)時間的限制不能滿足將是一個系統(tǒng)錯誤發(fā)生。 基于實時系統(tǒng)的實時性要求的不同,可分為軟實時和硬實時兩種。硬實時系統(tǒng)是指系統(tǒng)必須確保,在最壞情況下的服務(wù)時間,截止日期為事件的響應(yīng)時間是在任何情況下,必須滿足。如航天飛船的控制是這樣一個系統(tǒng)的現(xiàn)實。所有其他實時系統(tǒng)的特點,可以稱為軟實時系統(tǒng)。如果清除,軟實時系統(tǒng)是那些從統(tǒng)計學(xué)的角度來看,一個任務(wù)(在下面的討論中,我們將有任務(wù)和過程不作出區(qū)分),以確保系統(tǒng)的處理時間,可以得到事件可以處理的最后期限到來之前,違反的最后期限,并不會帶來一個致命的錯誤,如實時多媒體系統(tǒng)是一種軟實時系統(tǒng)。 一臺電腦系統(tǒng)的CPU和其他資源進行有效的調(diào)度和管理,以提供實時操作系統(tǒng)的支持。的多任務(wù)的實時系統(tǒng)中,資源的調(diào)度和管理更復(fù)雜的。下面討論本文將從各種實時任務(wù)調(diào)度算法的分類的角度來看,普通的Linux操作系統(tǒng)進程調(diào)度和各種實時Linux系統(tǒng),然后研究,以支持實時特點,普通的Linux系統(tǒng)的改進。實時領(lǐng)域的一些問題,并總結(jié)了各種實時Linux的Linux操作系統(tǒng),歸根到底是如何解決這些問題。 CPU的實時調(diào)度算法的分類多種實時操作系統(tǒng)的實時調(diào)度算法可以分為以下三類Wang99] [Gopalan01]:基于優(yōu)先級調(diào)度算法(優(yōu)先級驅(qū)動調(diào)度PD),基于在共享的CPU使用率調(diào)度算法(分享驅(qū)動調(diào)度SD)的比例,以及基于時間的進程調(diào)度算法(時間驅(qū)動調(diào)度TD),下面這三種調(diào)度算法逐一介紹。 1.1/>基于優(yōu)先級的調(diào)度算法,基于優(yōu)先級的調(diào)度算法,每個進程被分配一個優(yōu)先級,每次的進程調(diào)度程序,調(diào)度程序總是具有最高的調(diào)度優(yōu)先級的任務(wù)執(zhí)行。根據(jù)不同的優(yōu)先級分配方法,基于優(yōu)先級的調(diào)度算法可以分為以下兩種類型的Krishna01] [Wang99]:靜態(tài)優(yōu)先級調(diào)度算法 該算法得到這些系統(tǒng)中運行的所有進程都靜態(tài)分配一個優(yōu)先級。靜態(tài)優(yōu)先級分配的屬性的應(yīng)用程序,如任務(wù)循環(huán)中的用戶優(yōu)先級,或其他預(yù)先確定的政策。 RM(速率單調(diào))的調(diào)度算法是一個典型的靜態(tài)優(yōu)先級的調(diào)度算法,根據(jù)執(zhí)行的任務(wù)的調(diào)度優(yōu)先級的周期的長度確定,那些具有小的執(zhí)行周期的任務(wù)的優(yōu)先級較高。 動態(tài)優(yōu)先級調(diào)度算法:該算法基于任務(wù)的資源需求動態(tài)地分配任務(wù)的優(yōu)先級,資源分配和調(diào)度的目的更大的靈活性。非實時系統(tǒng),這種算法有很多,如短作業(yè)優(yōu)先級調(diào)度算法。任務(wù)的實時調(diào)度算法,EDF算法是使用最廣泛的動態(tài)優(yōu)先級調(diào)度算法,該算法根據(jù)他們的截止日期(截止日期)分配優(yōu)先級的就緒隊列中的每個任務(wù),最近期限具有最高的優(yōu)先級。 1.2 基于優(yōu)先級調(diào)度算法的調(diào)度算法是簡單而有效的,但這種算法的基礎(chǔ)上按比例份額是一個硬實時調(diào)度,許多的情況下,不適合使用此算法:例如,軟實時應(yīng)用,如實時多媒體會議系統(tǒng)。對于軟實時應(yīng)用程序,共享資源調(diào)度算法(SD算法)的比例使用是更合適的。 比例共享調(diào)度算法是指對CPU使用率的比例共享調(diào)度算法,其基本思路是按照一定的權(quán)重(比率),需要一組調(diào)度安排任務(wù),以使它們的權(quán)重成比例的執(zhí)行時間。 要實現(xiàn)比例共享調(diào)度算法[Nieh01]有兩種方法:第一種方法是調(diào)整的準備過程中出現(xiàn)的調(diào)度隊列隊第一頻率,并安排一線隊的過程中,執(zhí)行第二種方法是連續(xù)調(diào)度進程就緒隊列中投產(chǎn),但根據(jù)調(diào)整分配一個進程的運行時間片分配的權(quán)重。 比例共享調(diào)度算法可以分為以下類別:循環(huán)賽,公平份額,公平排隊,的彩票調(diào)度方法,(彩票)。 比例共享調(diào)度算法的一個問題是,它并沒有定義任何優(yōu)先的概念,所有的任務(wù)都根據(jù)其應(yīng)用的CPU資源的比例共享系統(tǒng)過載時,執(zhí)行的所有任務(wù)將較慢比例。因此,為了確保該系統(tǒng)的實時過程中獲得一定量的CPU處理時間,一般采用的是動態(tài)權(quán)重的調(diào)整過程。 1.3?;跁r間進程調(diào)度算法的調(diào)度算法對于那些具有穩(wěn)定,簡單的系統(tǒng)已知輸入,您可以使用時間驅(qū)動(驅(qū)動時間時間:TD)數(shù)據(jù)處理,它可以提供一個良好的預(yù)測。這種調(diào)度算法本質(zhì)上是一個設(shè)計定型的離線靜態(tài)調(diào)度方法。在系統(tǒng)的設(shè)計階段,所有處理的情況下,在明確的制度,每個任務(wù)切換的開始和結(jié)束的時間提前做出了明確的安排和設(shè)計。該算法是適用于小型嵌入式系統(tǒng),自動化控制系統(tǒng),傳感器和其他應(yīng)用環(huán)境。 該算法的優(yōu)勢是良好的可預(yù)測性任務(wù)的執(zhí)行,但最大的缺點是缺乏靈活性,而且會有一個任務(wù)需要執(zhí)行,而CPU保持空閑。 一般的Linux系統(tǒng)CPU調(diào)度一般的Linux系統(tǒng)支持實時和非實時兩種進程,實時進程與普通進程方面具有絕對的優(yōu)先權(quán)。相應(yīng)地,實時進程調(diào)度策略SCHED_FIFO或SCHED_RR,普通進程SCHED_OTHER調(diào)度策略。 每個任務(wù)調(diào)度算法的實現(xiàn)在Linux四種調(diào)度參數(shù),它們是rt_priority優(yōu)先政策(尼斯),計數(shù)器。調(diào)度進程調(diào)度的基礎(chǔ)上,這四個參數(shù)。 SCHED_OTHER調(diào)度策略,調(diào)度程序總是會選擇優(yōu)先級+計數(shù)器的值進程調(diào)度的執(zhí)行。從邏輯分析存在SCHED_OTHER調(diào)度策略調(diào)度處理來執(zhí)行,其特征在于,所述優(yōu)先級是一個固定的調(diào)度周期(歷元),在每個調(diào)度周期內(nèi)的過程中的優(yōu)先級,計數(shù)器的值的大小的影響這一刻已經(jīng)確定變量值的過程中被創(chuàng)建時,它代表了進程的優(yōu)先級,也代表數(shù)量的時間片,通過該方法可以得到在每個調(diào)度周期內(nèi),計數(shù)器是一個動態(tài)值,它反映了當前調(diào)度周期的過程中,剩余的時間片。在每個調(diào)度周期的開始,分配給優(yōu)先級值計數(shù)器,那么每一次進程被調(diào)度運行計數(shù)器的值?減少。當計數(shù)器的值是零,這個過程已經(jīng)運行的時間片調(diào)度期內(nèi),不再參與調(diào)度周期進程調(diào)度。當所有的進程都用完了時間片調(diào)度期結(jié)束,然后一遍又一遍。此外,可以看出在Linux系統(tǒng)中的調(diào)度周期是不固定的,它的量是動態(tài)變化的,例如,在運行的進程的數(shù)目和它們的優(yōu)先級值?可以影響一個劃時代的長度。有一點值得注意的是,在2.4內(nèi)核中,首要任務(wù)是不錯的替換兩個類似的作用。 按比例分擔的調(diào)度策略調(diào)度策略SCHED_OTHER可見的性質(zhì),它的這種設(shè)計方法,以確保進程調(diào)度的公平性 - 一個低優(yōu)先級進程,在每個時代也將得到他們的份額那些CPU的執(zhí)行時間,此外,它也提供了不同的進程的優(yōu)先級,進程執(zhí)行時間可以得到更多的具有高優(yōu)先級值。 對于實時的過程中,他們使用基于實時優(yōu)先級rt_priority的優(yōu)先級調(diào)度策略,但相同的實時優(yōu)先級的進程調(diào)度方法是根據(jù)不同的調(diào)度策略,BR /> SCHED_FIFO:不同的進程,根據(jù)靜態(tài)優(yōu)先級排隊,然后在相同的優(yōu)先級隊列,先準備好運行的第一誰調(diào)度和運行的進程不會被終止,直到發(fā)生以下情況:1。高優(yōu)先級的進程篡奪了CPU;自己的資源請求受阻;自己主動放棄CPU(呼叫SCHED_YIELD); SCHED_RR是這樣的:這個調(diào)度策略SCHED_FIFO與上述完全相同,除了時間片分配給每個進程,正在實施的過程中,給執(zhí)行時間片,時間片的長度可以通過sched_rr_get_interval調(diào)用由于Linux系統(tǒng)本身是一個桌面導(dǎo)向的系統(tǒng),因此,它是用于在實時應(yīng)用中的一些問題:/> /> Linux系統(tǒng)調(diào)度單位是10ms,所以它不能提供精確的定時中斷; p>當一個進程調(diào)用系統(tǒng)調(diào)用進入內(nèi)核模式運行,它不能被搶占; Linux內(nèi)核實現(xiàn)大量采用了封閉中斷操作損失; 由于使用虛擬內(nèi)存技術(shù),當發(fā)生頁面錯誤時,從硬盤中讀取的數(shù)據(jù)交換的需要,但硬盤讀取和寫入的存儲位置的隨機性,將導(dǎo)致隨機讀取和寫入時間,這在某些情況下,會影響實時任務(wù)期限;雖然Linux的進程調(diào)度器還支持實時優(yōu)先級,但由于缺乏有效的實時任務(wù)調(diào)度機制和調(diào)度算法;其網(wǎng)絡(luò)子協(xié)議處理和其它設(shè)備的中斷處理,調(diào)度伴有相應(yīng)的過程和自己的有沒有明確的調(diào)度機制; 各種實時Linux系統(tǒng) Home>的的 3.1 RT-Linux和RTAI RT-Linux是新墨西哥大學(xué)的研究(新墨西哥州技術(shù)學(xué)院)[RTLinuxWeb] [Barabanov97。其基本思路是,在Linux系統(tǒng)上的硬實時支持,它實現(xiàn)了一個微內(nèi)核實時操作系統(tǒng)(也被稱為RT-Linux的實時子系統(tǒng)),而普通的Linux系統(tǒng)作為一個低優(yōu)先級任務(wù)在操作系統(tǒng)中運行。在正常的Linux系統(tǒng)的另一個任務(wù)可以溝通,通過FIFO和實時任務(wù)。 RT-Linux的框架如圖1所示:圖1 RT-Linux的結(jié)構(gòu)RT-Linux的關(guān)鍵技術(shù)是軟件模擬硬件中斷控制器。當Linux系統(tǒng)不時阻止CPU中斷,實時定量RT-Linux的子系統(tǒng)的請求攔截,愛不釋手,而事實上并沒有真正阻止硬件中斷,從而避免了由于中斷造成的封由系統(tǒng)在一段時間內(nèi)沒有響應(yīng),從而在改進的實時。當傳遞給Linux內(nèi)核的RT-Linux的一個硬件中斷到達截取的中斷,并確定是否有一個實時子系統(tǒng)中斷例程來處理或處理。此外,的最小定時的精度在正常的Linux系統(tǒng)是確定系統(tǒng)的實時時鐘的頻率,Linux的系統(tǒng)時鐘被設(shè)置到時鐘中斷每秒100,所以在Linux的系統(tǒng)定時的精度10毫秒,即時鐘周期10ms時,RT-Linux的實時時鐘設(shè)置為單觸發(fā)狀態(tài),可以提供更多的十幾微秒調(diào)度粒度。 RT-Linux實時子系統(tǒng)的任務(wù)調(diào)度優(yōu)先級驅(qū)動算法,RM,EDF等,也可用于其他調(diào)度算法。 RT-Linux的專有系統(tǒng),重型工作,的確是一個不錯的選擇,但他只提供了CPU資源的調(diào)度和實時系統(tǒng)和Linux系統(tǒng)的關(guān)系不是非常密切,因此開發(fā)人員可以充分利用已在Linux系統(tǒng)中,如協(xié)議棧實現(xiàn)的功能。 RT-Linux的工業(yè)控制等實時任務(wù)簡單和硬實時要求的環(huán)境,但大量的工作需要做,如果你想應(yīng)用的多媒體處理。 意大利實時應(yīng)用程序接口(RTAI)來自RT-Linux的,它是在設(shè)計和RT-Linux的思想相同。這是原來的設(shè)計中,為了解決問題,RT-Linux的不同版本的Linux之間很難很難移植,RTAI在Linux上定義的實時硬件抽象層,這個抽象層接口提供實時任務(wù)Linux系統(tǒng)的相互作用,這可以增加一點可以Linux內(nèi)核源代碼到Linux內(nèi)核的實時支持。 3.2。 KURT-Linux的KURT-Linux的堪薩斯大學(xué)開發(fā)的,它可以提供實時微秒精度[KurtWeb] [斯里尼瓦桑]。與RT-Linux的單獨實現(xiàn)一個實時內(nèi)核,KURT-Linux是常用的Linux系統(tǒng)的基礎(chǔ)上實現(xiàn)的,這也是第一個基于Linux的實時系統(tǒng)可以使用普通的Linux系統(tǒng)調(diào)用。 KURT-Linux系統(tǒng)分為三種狀態(tài):正常狀態(tài),實時狀態(tài)和混合狀態(tài),在正常狀態(tài)下,它使用普通的Linux實時運行狀態(tài)實時調(diào)度策略任務(wù),實時和非實時任務(wù)的混合狀態(tài),可以執(zhí)行實時狀態(tài)可以被用來為實時的要求更加嚴格。 為了提高Linux系統(tǒng)的實時特性,有必要提高精度的時鐘系統(tǒng)的支持。但是,如果只是簡單地增加時鐘頻率將導(dǎo)致調(diào)度負載的增加,從而嚴重降低系統(tǒng)的性能。為了解決這個矛盾,KURT-Linux中使用的時鐘精度的方法[UTIMEWeb]提高Linux系統(tǒng)UTIME,時鐘芯片設(shè)置為單次觸發(fā)狀態(tài)(單拍模式),也就是每個時鐘芯片設(shè)置超時,然后再次超時事件發(fā)生時,在時鐘中斷的處理程序所需的時鐘芯片設(shè)置一個超時。其基本思想是一個精確的時間意味著我們需要的時鐘中斷發(fā)生時,我們需要一個更精確的時間,以達到這樣的精度,但并不一定需要系統(tǒng)時鐘頻率。它采用了CPU時鐘計數(shù)器時間戳計數(shù)器(TSC)提供準確的CPU頻率精度的時間。 KURT-Linux的實時任務(wù)調(diào)度,使用靜態(tài)CPU的實時調(diào)度算法,基于時間(TD)。實時任務(wù)需要實時事件發(fā)生在設(shè)計階段就必須清楚列明。該算法可以實現(xiàn)更好的調(diào)度任務(wù),對于那些誰周期。 KURT-Linux的相RT-Linux的優(yōu)勢之一是,你可以使用系統(tǒng)調(diào)用的Linux系統(tǒng),它最初是專為硬實時支持,但因為它是簡單的實現(xiàn)將使用一個簡單的時間驅(qū)動調(diào)度取代Linux的調(diào)度,實時進程調(diào)度的影響等非實時任務(wù),在某些情況下會發(fā)生實時任務(wù)的截止日期是脆弱的不符合的,也被稱為嚴格的實時系統(tǒng)(快地實時)?;贙URT-Linux的應(yīng)用程序:藝術(shù)(ATM參考交通系統(tǒng)),多媒體播放軟件。 KURT-Linux的另一種方法,需要頻繁的時鐘芯片編程。 3.3。 RED-Linux的RED-Linux是加州大學(xué)爾灣,實時Linux系統(tǒng)的發(fā)展[REDWeb] [Wang99],它將支持實時調(diào)度和Linux實現(xiàn)相同的操作系統(tǒng)內(nèi)核。它支持三種類型的調(diào)度算法,即:時間驅(qū)動優(yōu)先Dirven,分享驅(qū)動。 為了提高系統(tǒng)的調(diào)度粒度,RED-Linux的學(xué)習(xí)RT-Linux的軟件模擬中斷的管理機制,并增加頻率的時鐘中斷。 RED-Linux的中斷仿真程序只是簡單地中斷會在隊列中排隊一個硬件中斷到來時,并沒有進行實際的中斷處理程序。 另外,為了解決Linux的內(nèi)核模式的過程中不能被中斷,RED-Linux的插入Linux內(nèi)核搶占點原語的眾多功能,使這一進程在內(nèi)核模式下,也在一定程度上被搶占。通過這種方法提高了內(nèi)核的實時特性。 RED-Linux的設(shè)計目標是提供常規(guī)調(diào)度框架可以支持多種調(diào)度算法,系統(tǒng)為每個任務(wù)增加幾個屬性,進程調(diào)度的基礎(chǔ)上:優(yōu)先級:作業(yè)的優(yōu)先級; 開始時間:工作的開始時間; 完成時間:工作的結(jié)束時間; BR p>預(yù)算:資源的數(shù)量在操作過程中要使用的工作; 調(diào)整值?這些屬性和調(diào)度根據(jù)什么優(yōu)先使用的這些屬性值幾乎所有的調(diào)度算法。在這種情況下,三種不同的調(diào)度算法無縫地一起耦合到一個統(tǒng)一的。
第一部分:實時調(diào)度算法什么是實時系統(tǒng),POSIX 1003.b作了這樣的定義:是指系統(tǒng)可以在有限響應(yīng)時間內(nèi)提供所需的服務(wù)級別。較可取被定義為由Donald喬利士的的:一個實時系統(tǒng)的程序的邏輯正確性不僅取決于計算的準確度,而且還對結(jié)果,如果系統(tǒng)時間的限制不能滿足將是一個系統(tǒng)錯誤發(fā)生。 基于實時系統(tǒng)的實時性要求的不同,可分為軟實時和硬實時兩種。硬實時系統(tǒng)是指系統(tǒng)必須確保,在最壞情況下的服務(wù)時間,截止日期為事件的響應(yīng)時間是在任何情況下,必須滿足。如航天飛船的控制是這樣一個系統(tǒng)的現(xiàn)實。所有其他實時系統(tǒng)的特點,可以稱為軟實時系統(tǒng)。如果清除,軟實時系統(tǒng)是那些從統(tǒng)計學(xué)的角度來看,一個任務(wù)(在下面的討論中,我們將有任務(wù)和過程不作出區(qū)分),以確保系統(tǒng)的處理時間,可以得到事件可以處理的最后期限到來之前,違反的最后期限,并不會帶來一個致命的錯誤,如實時多媒體系統(tǒng)是一種軟實時系統(tǒng)。 一臺電腦系統(tǒng)的CPU和其他資源進行有效的調(diào)度和管理,以提供實時操作系統(tǒng)的支持。的多任務(wù)的實時系統(tǒng)中,資源的調(diào)度和管理更復(fù)雜的。下面討論本文將從各種實時任務(wù)調(diào)度算法的分類的角度來看,普通的Linux操作系統(tǒng)進程調(diào)度和各種實時Linux系統(tǒng),然后研究,以支持實時特點,普通的Linux系統(tǒng)的改進。實時領(lǐng)域的一些問題,并總結(jié)了各種實時Linux的Linux操作系統(tǒng),歸根到底是如何解決這些問題。 CPU的實時調(diào)度算法的分類多種實時操作系統(tǒng)的實時調(diào)度算法可以分為以下三類Wang99] [Gopalan01]:基于優(yōu)先級調(diào)度算法(優(yōu)先級驅(qū)動調(diào)度PD),基于在共享的CPU使用率調(diào)度算法(分享驅(qū)動調(diào)度SD)的比例,以及基于時間的進程調(diào)度算法(時間驅(qū)動調(diào)度TD),下面這三種調(diào)度算法逐一介紹。 1.1/>基于優(yōu)先級的調(diào)度算法,基于優(yōu)先級的調(diào)度算法,每個進程被分配一個優(yōu)先級,每次的進程調(diào)度程序,調(diào)度程序總是具有最高的調(diào)度優(yōu)先級的任務(wù)執(zhí)行。根據(jù)不同的優(yōu)先級分配方法,基于優(yōu)先級的調(diào)度算法可以分為以下兩種類型的Krishna01] [Wang99]:靜態(tài)優(yōu)先級調(diào)度算法 該算法得到這些系統(tǒng)中運行的所有進程都靜態(tài)分配一個優(yōu)先級。靜態(tài)優(yōu)先級分配的屬性的應(yīng)用程序,如任務(wù)循環(huán)中的用戶優(yōu)先級,或其他預(yù)先確定的政策。 RM(速率單調(diào))的調(diào)度算法是一個典型的靜態(tài)優(yōu)先級的調(diào)度算法,根據(jù)執(zhí)行的任務(wù)的調(diào)度優(yōu)先級的周期的長度確定,那些具有小的執(zhí)行周期的任務(wù)的優(yōu)先級較高。 動態(tài)優(yōu)先級調(diào)度算法:該算法基于任務(wù)的資源需求動態(tài)地分配任務(wù)的優(yōu)先級,資源分配和調(diào)度的目的更大的靈活性。非實時系統(tǒng),這種算法有很多,如短作業(yè)優(yōu)先級調(diào)度算法。任務(wù)的實時調(diào)度算法,EDF算法是使用最廣泛的動態(tài)優(yōu)先級調(diào)度算法,該算法根據(jù)他們的截止日期(截止日期)分配優(yōu)先級的就緒隊列中的每個任務(wù),最近期限具有最高的優(yōu)先級。 1.2 基于優(yōu)先級調(diào)度算法的調(diào)度算法是簡單而有效的,但這種算法的基礎(chǔ)上按比例份額是一個硬實時調(diào)度,許多的情況下,不適合使用此算法:例如,軟實時應(yīng)用,如實時多媒體會議系統(tǒng)。對于軟實時應(yīng)用程序,共享資源調(diào)度算法(SD算法)的比例使用是更合適的。 比例共享調(diào)度算法是指對CPU使用率的比例共享調(diào)度算法,其基本思路是按照一定的權(quán)重(比率),需要一組調(diào)度安排任務(wù),以使它們的權(quán)重成比例的執(zhí)行時間。 要實現(xiàn)比例共享調(diào)度算法[Nieh01]有兩種方法:第一種方法是調(diào)整的準備過程中出現(xiàn)的調(diào)度隊列隊第一頻率,并安排一線隊的過程中,執(zhí)行第二種方法是連續(xù)調(diào)度進程就緒隊列中投產(chǎn),但根據(jù)調(diào)整分配一個進程的運行時間片分配的權(quán)重。 比例共享調(diào)度算法可以分為以下類別:循環(huán)賽,公平份額,公平排隊,的彩票調(diào)度方法,(彩票)。 比例共享調(diào)度算法的一個問題是,它并沒有定義任何優(yōu)先的概念,所有的任務(wù)都根據(jù)其應(yīng)用的CPU資源的比例共享系統(tǒng)過載時,執(zhí)行的所有任務(wù)將較慢比例。因此,為了確保該系統(tǒng)的實時過程中獲得一定量的CPU處理時間,一般采用的是動態(tài)權(quán)重的調(diào)整過程。 1.3?;跁r間進程調(diào)度算法的調(diào)度算法對于那些具有穩(wěn)定,簡單的系統(tǒng)已知輸入,您可以使用時間驅(qū)動(驅(qū)動時間時間:TD)數(shù)據(jù)處理,它可以提供一個良好的預(yù)測。這種調(diào)度算法本質(zhì)上是一個設(shè)計定型的離線靜態(tài)調(diào)度方法。在系統(tǒng)的設(shè)計階段,所有處理的情況下,在明確的制度,每個任務(wù)切換的開始和結(jié)束的時間提前做出了明確的安排和設(shè)計。該算法是適用于小型嵌入式系統(tǒng),自動化控制系統(tǒng),傳感器和其他應(yīng)用環(huán)境。 該算法的優(yōu)勢是良好的可預(yù)測性任務(wù)的執(zhí)行,但最大的缺點是缺乏靈活性,而且會有一個任務(wù)需要執(zhí)行,而CPU保持空閑。 一般的Linux系統(tǒng)CPU調(diào)度一般的Linux系統(tǒng)支持實時和非實時兩種進程,實時進程與普通進程方面具有絕對的優(yōu)先權(quán)。相應(yīng)地,實時進程調(diào)度策略SCHED_FIFO或SCHED_RR,普通進程SCHED_OTHER調(diào)度策略。 每個任務(wù)調(diào)度算法的實現(xiàn)在Linux四種調(diào)度參數(shù),它們是rt_priority優(yōu)先政策(尼斯),計數(shù)器。調(diào)度進程調(diào)度的基礎(chǔ)上,這四個參數(shù)。 SCHED_OTHER調(diào)度策略,調(diào)度程序總是會選擇優(yōu)先級+計數(shù)器的值進程調(diào)度的執(zhí)行。從邏輯分析存在SCHED_OTHER調(diào)度策略調(diào)度處理來執(zhí)行,其特征在于,所述優(yōu)先級是一個固定的調(diào)度周期(歷元),在每個調(diào)度周期內(nèi)的過程中的優(yōu)先級,計數(shù)器的值的大小的影響這一刻已經(jīng)確定變量值的過程中被創(chuàng)建時,它代表了進程的優(yōu)先級,也代表數(shù)量的時間片,通過該方法可以得到在每個調(diào)度周期內(nèi),計數(shù)器是一個動態(tài)值,它反映了當前調(diào)度周期的過程中,剩余的時間片。在每個調(diào)度周期的開始,分配給優(yōu)先級值計數(shù)器,那么每一次進程被調(diào)度運行計數(shù)器的值?減少。當計數(shù)器的值是零,這個過程已經(jīng)運行的時間片調(diào)度期內(nèi),不再參與調(diào)度周期進程調(diào)度。當所有的進程都用完了時間片調(diào)度期結(jié)束,然后一遍又一遍。此外,可以看出在Linux系統(tǒng)中的調(diào)度周期是不固定的,它的量是動態(tài)變化的,例如,在運行的進程的數(shù)目和它們的優(yōu)先級值?可以影響一個劃時代的長度。有一點值得注意的是,在2.4內(nèi)核中,首要任務(wù)是不錯的替換兩個類似的作用。 按比例分擔的調(diào)度策略調(diào)度策略SCHED_OTHER可見的性質(zhì),它的這種設(shè)計方法,以確保進程調(diào)度的公平性 - 一個低優(yōu)先級進程,在每個時代也將得到他們的份額那些CPU的執(zhí)行時間,此外,它也提供了不同的進程的優(yōu)先級,進程執(zhí)行時間可以得到更多的具有高優(yōu)先級值。 對于實時的過程中,他們使用基于實時優(yōu)先級rt_priority的優(yōu)先級調(diào)度策略,但相同的實時優(yōu)先級的進程調(diào)度方法是根據(jù)不同的調(diào)度策略,BR /> SCHED_FIFO:不同的進程,根據(jù)靜態(tài)優(yōu)先級排隊,然后在相同的優(yōu)先級隊列,先準備好運行的第一誰調(diào)度和運行的進程不會被終止,直到發(fā)生以下情況:1。高優(yōu)先級的進程篡奪了CPU;自己的資源請求受阻;自己主動放棄CPU(呼叫SCHED_YIELD); SCHED_RR是這樣的:這個調(diào)度策略SCHED_FIFO與上述完全相同,除了時間片分配給每個進程,正在實施的過程中,給執(zhí)行時間片,時間片的長度可以通過sched_rr_get_interval調(diào)用由于Linux系統(tǒng)本身是一個桌面導(dǎo)向的系統(tǒng),因此,它是用于在實時應(yīng)用中的一些問題:/> /> Linux系統(tǒng)調(diào)度單位是10ms,所以它不能提供精確的定時中斷; p>當一個進程調(diào)用系統(tǒng)調(diào)用進入內(nèi)核模式運行,它不能被搶占; Linux內(nèi)核實現(xiàn)大量采用了封閉中斷操作損失; 由于使用虛擬內(nèi)存技術(shù),當發(fā)生頁面錯誤時,從硬盤中讀取的數(shù)據(jù)交換的需要,但硬盤讀取和寫入的存儲位置的隨機性,將導(dǎo)致隨機讀取和寫入時間,這在某些情況下,會影響實時任務(wù)期限;雖然Linux的進程調(diào)度器還支持實時優(yōu)先級,但由于缺乏有效的實時任務(wù)調(diào)度機制和調(diào)度算法;其網(wǎng)絡(luò)子協(xié)議處理和其它設(shè)備的中斷處理,調(diào)度伴有相應(yīng)的過程和自己的有沒有明確的調(diào)度機制; 各種實時Linux系統(tǒng) Home>的的 3.1 RT-Linux和RTAI RT-Linux是新墨西哥大學(xué)的研究(新墨西哥州技術(shù)學(xué)院)[RTLinuxWeb] [Barabanov97。其基本思路是,在Linux系統(tǒng)上的硬實時支持,它實現(xiàn)了一個微內(nèi)核實時操作系統(tǒng)(也被稱為RT-Linux的實時子系統(tǒng)),而普通的Linux系統(tǒng)作為一個低優(yōu)先級任務(wù)在操作系統(tǒng)中運行。在正常的Linux系統(tǒng)的另一個任務(wù)可以溝通,通過FIFO和實時任務(wù)。 RT-Linux的框架如圖1所示:圖1 RT-Linux的結(jié)構(gòu)RT-Linux的關(guān)鍵技術(shù)是軟件模擬硬件中斷控制器。當Linux系統(tǒng)不時阻止CPU中斷,實時定量RT-Linux的子系統(tǒng)的請求攔截,愛不釋手,而事實上并沒有真正阻止硬件中斷,從而避免了由于中斷造成的封由系統(tǒng)在一段時間內(nèi)沒有響應(yīng),從而在改進的實時。當傳遞給Linux內(nèi)核的RT-Linux的一個硬件中斷到達截取的中斷,并確定是否有一個實時子系統(tǒng)中斷例程來處理或處理。此外,的最小定時的精度在正常的Linux系統(tǒng)是確定系統(tǒng)的實時時鐘的頻率,Linux的系統(tǒng)時鐘被設(shè)置到時鐘中斷每秒100,所以在Linux的系統(tǒng)定時的精度10毫秒,即時鐘周期10ms時,RT-Linux的實時時鐘設(shè)置為單觸發(fā)狀態(tài),可以提供更多的十幾微秒調(diào)度粒度。 RT-Linux實時子系統(tǒng)的任務(wù)調(diào)度優(yōu)先級驅(qū)動算法,RM,EDF等,也可用于其他調(diào)度算法。 RT-Linux的專有系統(tǒng),重型工作,的確是一個不錯的選擇,但他只提供了CPU資源的調(diào)度和實時系統(tǒng)和Linux系統(tǒng)的關(guān)系不是非常密切,因此開發(fā)人員可以充分利用已在Linux系統(tǒng)中,如協(xié)議棧實現(xiàn)的功能。 RT-Linux的工業(yè)控制等實時任務(wù)簡單和硬實時要求的環(huán)境,但大量的工作需要做,如果你想應(yīng)用的多媒體處理。 意大利實時應(yīng)用程序接口(RTAI)來自RT-Linux的,它是在設(shè)計和RT-Linux的思想相同。這是原來的設(shè)計中,為了解決問題,RT-Linux的不同版本的Linux之間很難很難移植,RTAI在Linux上定義的實時硬件抽象層,這個抽象層接口提供實時任務(wù)Linux系統(tǒng)的相互作用,這可以增加一點可以Linux內(nèi)核源代碼到Linux內(nèi)核的實時支持。 3.2。 KURT-Linux的KURT-Linux的堪薩斯大學(xué)開發(fā)的,它可以提供實時微秒精度[KurtWeb] [斯里尼瓦桑]。與RT-Linux的單獨實現(xiàn)一個實時內(nèi)核,KURT-Linux是常用的Linux系統(tǒng)的基礎(chǔ)上實現(xiàn)的,這也是第一個基于Linux的實時系統(tǒng)可以使用普通的Linux系統(tǒng)調(diào)用。 KURT-Linux系統(tǒng)分為三種狀態(tài):正常狀態(tài),實時狀態(tài)和混合狀態(tài),在正常狀態(tài)下,它使用普通的Linux實時運行狀態(tài)實時調(diào)度策略任務(wù),實時和非實時任務(wù)的混合狀態(tài),可以執(zhí)行實時狀態(tài)可以被用來為實時的要求更加嚴格。 為了提高Linux系統(tǒng)的實時特性,有必要提高精度的時鐘系統(tǒng)的支持。但是,如果只是簡單地增加時鐘頻率將導(dǎo)致調(diào)度負載的增加,從而嚴重降低系統(tǒng)的性能。為了解決這個矛盾,KURT-Linux中使用的時鐘精度的方法[UTIMEWeb]提高Linux系統(tǒng)UTIME,時鐘芯片設(shè)置為單次觸發(fā)狀態(tài)(單拍模式),也就是每個時鐘芯片設(shè)置超時,然后再次超時事件發(fā)生時,在時鐘中斷的處理程序所需的時鐘芯片設(shè)置一個超時。其基本思想是一個精確的時間意味著我們需要的時鐘中斷發(fā)生時,我們需要一個更精確的時間,以達到這樣的精度,但并不一定需要系統(tǒng)時鐘頻率。它采用了CPU時鐘計數(shù)器時間戳計數(shù)器(TSC)提供準確的CPU頻率精度的時間。 KURT-Linux的實時任務(wù)調(diào)度,使用靜態(tài)CPU的實時調(diào)度算法,基于時間(TD)。實時任務(wù)需要實時事件發(fā)生在設(shè)計階段就必須清楚列明。該算法可以實現(xiàn)更好的調(diào)度任務(wù),對于那些誰周期。 KURT-Linux的相RT-Linux的優(yōu)勢之一是,你可以使用系統(tǒng)調(diào)用的Linux系統(tǒng),它最初是專為硬實時支持,但因為它是簡單的實現(xiàn)將使用一個簡單的時間驅(qū)動調(diào)度取代Linux的調(diào)度,實時進程調(diào)度的影響等非實時任務(wù),在某些情況下會發(fā)生實時任務(wù)的截止日期是脆弱的不符合的,也被稱為嚴格的實時系統(tǒng)(快地實時)?;贙URT-Linux的應(yīng)用程序:藝術(shù)(ATM參考交通系統(tǒng)),多媒體播放軟件。 KURT-Linux的另一種方法,需要頻繁的時鐘芯片編程。 3.3。 RED-Linux的RED-Linux是加州大學(xué)爾灣,實時Linux系統(tǒng)的發(fā)展[REDWeb] [Wang99],它將支持實時調(diào)度和Linux實現(xiàn)相同的操作系統(tǒng)內(nèi)核。它支持三種類型的調(diào)度算法,即:時間驅(qū)動優(yōu)先Dirven,分享驅(qū)動。 為了提高系統(tǒng)的調(diào)度粒度,RED-Linux的學(xué)習(xí)RT-Linux的軟件模擬中斷的管理機制,并增加頻率的時鐘中斷。 RED-Linux的中斷仿真程序只是簡單地中斷會在隊列中排隊一個硬件中斷到來時,并沒有進行實際的中斷處理程序。 另外,為了解決Linux的內(nèi)核模式的過程中不能被中斷,RED-Linux的插入Linux內(nèi)核搶占點原語的眾多功能,使這一進程在內(nèi)核模式下,也在一定程度上被搶占。通過這種方法提高了內(nèi)核的實時特性。 RED-Linux的設(shè)計目標是提供常規(guī)調(diào)度框架可以支持多種調(diào)度算法,系統(tǒng)為每個任務(wù)增加幾個屬性,進程調(diào)度的基礎(chǔ)上:優(yōu)先級:作業(yè)的優(yōu)先級; 開始時間:工作的開始時間; 完成時間:工作的結(jié)束時間; BR p>預(yù)算:資源的數(shù)量在操作過程中要使用的工作; 調(diào)整值?這些屬性和調(diào)度根據(jù)什么優(yōu)先使用的這些屬性值幾乎所有的調(diào)度算法。在這種情況下,三種不同的調(diào)度算法無縫地一起耦合到一個統(tǒng)一的。
Linux版本的Linux內(nèi)核,使用新的調(diào)度算法,該算法是O(1)調(diào)度算法由Ingo Molnar的開發(fā)。在高負載的情況下,這是極好的,處理器調(diào)度,具有良好的擴展。 預(yù)先包裝的Linux 2.4版本的標準調(diào)度,使用的時間的切片重新計算算法。此算法要求已用盡所有進程的時間片后,重新計算下一次運行的時間片。所以每個任務(wù)調(diào)度支出不確定的,可能是因為計算比較復(fù)雜,較大的調(diào)度延遲。特別是在多處理器系統(tǒng)中,也可能是由于調(diào)度延遲,導(dǎo)致大部分處理器空閑/>狀態(tài),影響系統(tǒng)的性能。 調(diào)度調(diào)度算法O(1),組的數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)的優(yōu)先級??梢允挂唤M中的優(yōu)先級,每個優(yōu)先級都有一個對應(yīng)的任務(wù)隊列,有一個優(yōu)先級位圖,位圖中的每一個優(yōu)先級對應(yīng)的位圖,可以快速執(zhí)行最高優(yōu)先級任務(wù)。由于優(yōu)先級的數(shù)目是固定的,因此,發(fā)現(xiàn)固定的時間,未運行的任務(wù)數(shù)的影響。 調(diào)度組的優(yōu)先級為每個處理器維護兩個有效和過期數(shù)組:數(shù)組。陣列內(nèi)的任務(wù)隊列進程有效運行時間切片;陣列任務(wù)隊列進程的時間片內(nèi)到期的可被執(zhí)行。當一個進程的時間片用完時,它移動到過期的陣列的有源陣列,和時間片已被重新計算。當需要重新安排這些任務(wù),只要在有效陣列開關(guān)和過期數(shù)組就好了。這種交換為O(1)算法。 更多的算法,谷歌!