當前位置:首頁 » 半夜時分 » 處理時間的演算法介面被稱為什麼

處理時間的演算法介面被稱為什麼

發布時間: 2022-08-08 09:21:37

㈠ linux調度演算法的核心思想是什麼

第一部分:實時調度演算法

什麼是實時系統,POSIX 1003.b作了這樣的定義:是指系統可以在有限響應時間內提供所需的服務級別。較可取被定義為由Donald喬利士的的:一個實時系統的程序的邏輯正確性不僅取決於計算的准確度,而且還對結果,如果系統時間的限制不能滿足將是一個系統錯誤發生。

基於實時系統的實時性要求的不同,可分為軟實時和硬實時兩種。硬實時系統是指系統必須確保,在最壞情況下的服務時間,截止日期為事件的響應時間是在任何情況下,必須滿足。如航天飛船的控制是這樣一個系統的現實。所有其他實時系統的特點,可以稱為軟實時系統。如果清除,軟實時系統是那些從統計學的角度來看,一個任務(在下面的討論中,我們將有任務和過程不作出區分),以確保系統的處理時間,可以得到事件可以處理的最後期限到來之前,違反的最後期限,並不會帶來一個致命的錯誤,如實時多媒體系統是一種軟實時系統。

一台電腦系統的CPU和其他資源進行有效的調度和管理,以提供實時操作系統的支持。的多任務的實時系統中,資源的調度和管理更復雜的。下面討論本文將從各種實時任務調度演算法的分類的角度來看,普通的Linux操作系統進程調度和各種實時Linux系統,然後研究,以支持實時特點,普通的Linux系統的改進。實時領域的一些問題,並總結了各種實時Linux的Linux操作系統,歸根到底是如何解決這些問題。

CPU的實時調度演算法的分類

多種實時操作系統的實時調度演算法可以分為以下三類Wang99] [Gopalan01]:基於優先順序調度演算法(優先順序驅動調度PD),基於在共享的CPU使用率調度演算法(分享驅動調度SD)的比例,以及基於時間的進程調度演算法(時間驅動調度TD),下面這三種調度演算法逐一介紹。

1.1

/>基於優先順序的調度演算法,基於優先順序的調度演算法,每個進程被分配一個優先順序,每次的進程調度程序,調度程序總是具有最高的調度優先順序的任務執行。根據不同的優先順序分配方法,基於優先順序的調度演算法可以分為以下兩種類型的Krishna01] [Wang99]:靜態優先順序調度演算法

該演算法得到這些系統中運行的所有進程都靜態分配一個優先順序。靜態優先順序分配的屬性的應用程序,如任務循環中的用戶優先順序,或其他預先確定的政策。 RM(速率單調)的調度演算法是一個典型的靜態優先順序的調度演算法,根據執行的任務的調度優先順序的周期的長度確定,那些具有小的執行周期的任務的優先順序較高。

動態優先順序調度演算法:

該演算法基於任務的資源需求動態地分配任務的優先順序,資源分配和調度的目的更大的靈活性。非實時系統,這種演算法有很多,如短作業優先順序調度演算法。任務的實時調度演算法,EDF演算法是使用最廣泛的動態優先順序調度演算法,該演算法根據他們的截止日期(截止日期)分配優先順序的就緒隊列中的每個任務,最近期限具有最高的優先順序。

1.2

基於優先順序調度演算法的調度演算法是簡單而有效的,但這種演算法的基礎上按比例份額是一個硬實時調度,許多的情況下,不適合使用此演算法:例如,軟實時應用,如實時多媒體會議系統。對於軟實時應用程序,共享資源調度演算法(SD演算法)的比例使用是更合適的。

比例共享調度演算法是指對CPU使用率的比例共享調度演算法,其基本思路是按照一定的權重(比率),需要一組調度安排任務,以使它們的權重成比例的執行時間。

要實現比例共享調度演算法[Nieh01]有兩種方法:第一種方法是調整的准備過程中出現的調度隊列隊第一頻率,並安排一線隊的過程中,執行第二種方法是連續調度進程就緒隊列中投產,但根據調整分配一個進程的運行時間片分配的權重。

比例共享調度演算法可以分為以下類別:循環賽,公平份額,公平排隊,的彩票調度方法,(彩票)。

比例共享調度演算法的一個問題是,它並沒有定義任何優先的概念,所有的任務都根據其應用的CPU資源的比例共享系統過載時,執行的所有任務將較慢比例。因此,為了確保該系統的實時過程中獲得一定量的CPU處理時間,一般採用的是動態權重的調整過程。

1.3。基於時間進程調度演算法的調度演算法

對於那些具有穩定,簡單的系統已知輸入,您可以使用時間驅動(驅動時間時間:TD)數據處理,它可以提供一個良好的預測。這種調度演算法本質上是一個設計定型的離線靜態調度方法。在系統的設計階段,所有處理的情況下,在明確的制度,每個任務切換的開始和結束的時間提前做出了明確的安排和設計。該演算法是適用於小型嵌入式系統,自動化控制系統,感測器和其他應用環境。

該演算法的優勢是良好的可預測性任務的執行,但最大的缺點是缺乏靈活性,而且會有一個任務需要執行,而CPU保持空閑。

一般的Linux系統CPU調度

一般的Linux系統支持實時和非實時兩種進程,實時進程與普通進程方面具有絕對的優先權。相應地,實時進程調度策略SCHED_FIFO或SCHED_RR,普通進程SCHED_OTHER調度策略。

每個任務調度演算法的實現在Linux四種調度參數,它們是rt_priority優先政策(尼斯),計數器。調度進程調度的基礎上,這四個參數。

SCHED_OTHER調度策略,調度程序總是會選擇優先順序+計數器的值進程調度的執行。從邏輯分析存在SCHED_OTHER調度策略調度處理來執行,其特徵在於,所述優先順序是一個固定的調度周期(歷元),在每個調度周期內的過程中的優先順序,計數器的值的大小的影響這一刻已經確定變數值的過程中被創建時,它代表了進程的優先順序,也代表數量的時間片,通過該方法可以得到在每個調度周期內,計數器是一個動態值,它反映了當前調度周期的過程中,剩餘的時間片。在每個調度周期的開始,分配給優先順序值計數器,那麼每一次進程被調度運行計數器的值?減少。當計數器的值是零,這個過程已經運行的時間片調度期內,不再參與調度周期進程調度。當所有的進程都用完了時間片調度期結束,然後一遍又一遍。此外,可以看出在Linux系統中的調度周期是不固定的,它的量是動態變化的,例如,在運行的進程的數目和它們的優先順序值?可以影響一個劃時代的長度。有一點值得注意的是,在2.4內核中,首要任務是不錯的替換兩個類似的作用。

按比例分擔的調度策略調度策略SCHED_OTHER可見的性質,它的這種設計方法,以確保進程調度的公平性 - 一個低優先順序進程,在每個時代也將得到他們的份額那些CPU的執行時間,此外,它也提供了不同的進程的優先順序,進程執行時間可以得到更多的具有高優先順序值。

對於實時的過程中,他們使用基於實時優先順序rt_priority的優先順序調度策略,但相同的實時優先順序的進程調度方法是根據不同的調度策略,

BR /> SCHED_FIFO:不同的進程,根據靜態優先順序排隊,然後在相同的優先順序隊列,先准備好運行的第一誰調度和運行的進程不會被終止,直到發生以下情況:1。高優先順序的進程篡奪了CPU;自己的資源請求受阻;自己主動放棄CPU(呼叫SCHED_YIELD);

SCHED_RR是這樣的:這個調度策略SCHED_FIFO與上述完全相同,除了時間片分配給每個進程,正在實施的過程中,給執行時間片,時間片的長度可以通過sched_rr_get_interval調用

由於Linux系統本身是一個桌面導向的系統,因此,它是用於在實時應用中的一些問題:/> /> Linux系統調度單位是10ms,所以它不能提供精確的定時中斷; p>當一個進程調用系統調用進入內核模式運行,它不能被搶占;

Linux內核實現大量採用了封閉中斷操作損失;

由於使用虛擬內存技術,當發生頁面錯誤時,從硬碟中讀取的數據交換的需要,但硬碟讀取和寫入的存儲位置的隨機性,將導致隨機讀取和寫入時間,這在某些情況下,會影響實時任務期限;

雖然Linux的進程調度器還支持實時優先順序,但由於缺乏有效的實時任務調度機制和調度演算法;其網路子協議處理和其它設備的中斷處理,調度伴有相應的過程和自己的有沒有明確的調度機制;

各種實時Linux系統
Home>的的

3.1 RT-Linux和RTAI

RT-Linux是新墨西哥大學的研究(新墨西哥州技術學院)[RTLinuxWeb] [Barabanov97。其基本思路是,在Linux系統上的硬實時支持,它實現了一個微內核實時操作系統(也被稱為RT-Linux的實時子系統),而普通的Linux系統作為一個低優先順序任務在操作系統中運行。在正常的Linux系統的另一個任務可以溝通,通過FIFO和實時任務。 RT-Linux的框架如圖1所示:

圖1 RT-Linux的結構

RT-Linux的關鍵技術是軟體模擬硬體中斷控制器。當Linux系統不時阻止CPU中斷,實時定量RT-Linux的子系統的請求攔截,愛不釋手,而事實上並沒有真正阻止硬體中斷,從而避免了由於中斷造成的封由系統在一段時間內沒有響應,從而在改進的實時。當傳遞給Linux內核的RT-Linux的一個硬體中斷到達截取的中斷,並確定是否有一個實時子系統中斷常式來處理或處理。此外,的最小定時的精度在正常的Linux系統是確定系統的實時時鍾的頻率,Linux的系統時鍾被設置到時鍾中斷每秒100,所以在Linux的系統定時的精度10毫秒,即時鍾周期10ms時,RT-Linux的實時時鍾設置為單觸發狀態,可以提供更多的十幾微秒調度粒度。

RT-Linux實時子系統的任務調度優先順序驅動演算法,RM,EDF等,也可用於其他調度演算法。

RT-Linux的專有系統,重型工作,的確是一個不錯的選擇,但他只提供了CPU資源的調度和實時系統和Linux系統的關系不是非常密切,因此開發人員可以充分利用已在Linux系統中,如協議棧實現的功能。 RT-Linux的工業控制等實時任務簡單和硬實時要求的環境,但大量的工作需要做,如果你想應用的多媒體處理。

義大利實時應用程序介面(RTAI)來自RT-Linux的,它是在設計和RT-Linux的思想相同。這是原來的設計中,為了解決問題,RT-Linux的不同版本的Linux之間很難很難移植,RTAI在Linux上定義的實時硬體抽象層,這個抽象層介面提供實時任務Linux系統的相互作用,這可以增加一點可以Linux內核源代碼到Linux內核的實時支持。

3.2。 KURT-Linux的

KURT-Linux的堪薩斯大學開發的,它可以提供實時微秒精度[KurtWeb] [斯里尼瓦桑]。與RT-Linux的單獨實現一個實時內核,KURT-Linux是常用的Linux系統的基礎上實現的,這也是第一個基於Linux的實時系統可以使用普通的Linux系統調用。

KURT-Linux系統分為三種狀態:正常狀態,實時狀態和混合狀態,在正常狀態下,它使用普通的Linux實時運行狀態實時調度策略任務,實時和非實時任務的混合狀態,可以執行實時狀態可以被用來為實時的要求更加嚴格。

為了提高Linux系統的實時特性,有必要提高精度的時鍾系統的支持。但是,如果只是簡單地增加時鍾頻率將導致調度負載的增加,從而嚴重降低系統的性能。為了解決這個矛盾,KURT-Linux中使用的時鍾精度的方法[UTIMEWeb]提高Linux系統UTIME,時鍾晶元設置為單次觸發狀態(單拍模式),也就是每個時鍾晶元設置超時,然後再次超時事件發生時,在時鍾中斷的處理程序所需的時鍾晶元設置一個超時。其基本思想是一個精確的時間意味著我們需要的時鍾中斷發生時,我們需要一個更精確的時間,以達到這樣的精度,但並不一定需要系統時鍾頻率。它採用了CPU時鍾計數器時間戳計數器(TSC)提供准確的CPU頻率精度的時間。

KURT-Linux的實時任務調度,使用靜態CPU的實時調度演算法,基於時間(TD)。實時任務需要實時事件發生在設計階段就必須清楚列明。該演算法可以實現更好的調度任務,對於那些誰周期。

KURT-Linux的相RT-Linux的優勢之一是,你可以使用系統調用的Linux系統,它最初是專為硬實時支持,但因為它是簡單的實現將使用一個簡單的時間驅動調度取代Linux的調度,實時進程調度的影響等非實時任務,在某些情況下會發生實時任務的截止日期是脆弱的不符合的,也被稱為嚴格的實時系統(快地實時)。基於KURT-Linux的應用程序:藝術(ATM參考交通系統),多媒體播放軟體。 KURT-Linux的另一種方法,需要頻繁的時鍾晶元編程。

3.3。 RED-Linux的

RED-Linux是加州大學爾灣,實時Linux系統的發展[REDWeb] [Wang99],它將支持實時調度和Linux實現相同的操作系統內核。它支持三種類型的調度演算法,即:時間驅動優先Dirven,分享驅動。

為了提高系統的調度粒度,RED-Linux的學習RT-Linux的軟體模擬中斷的管理機制,並增加頻率的時鍾中斷。 RED-Linux的中斷模擬程序只是簡單地中斷會在隊列中排隊一個硬體中斷到來時,並沒有進行實際的中斷處理程序。

另外,為了解決Linux的內核模式的過程中不能被中斷,RED-Linux的插入Linux內核搶占點原語的眾多功能,使這一進程在內核模式下,也在一定程度上被搶占。通過這種方法提高了內核的實時特性。

RED-Linux的設計目標是提供常規調度框架可以支持多種調度演算法,系統為每個任務增加幾個屬性,進程調度的基礎上:

優先順序:作業的優先順序;

開始時間:工作的開始時間;

完成時間:工作的結束時間; BR p>預算:資源的數量在操作過程中要使用的工作;

調整值?這些屬性和調度根據什麼優先使用的這些屬性值幾乎所有的調度演算法。在這種情況下,三種不同的調度演算法無縫地一起耦合到一個統一的。

㈡ JAVA:監視器可以處理時間嗎那才處理時間的介面是幹嘛的啊

你讀的懂你的問題嗎?!

㈢ 什麼是時間戳

時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。通俗的講, 時間戳是一份能夠表示一份數據在一個特定時間點已經存在的完整的可驗證的數據。

它的提出主要是為用戶提供一份電子證據, 以證明用戶的某些數據的產生時間。 在實際應用上, 它可以使用在包括電子商務、 金融活動的各個方面, 尤其可以用來支撐公開密鑰基礎設施的 「不可否認」 服務。

時間戳(time-stamp)是一個經加密後形成的憑證文檔,它包括三個部分:

1、需加時間戳的文件的摘要(digest);

2、DTS收到文件的日期和時間;

3、DTS的數字簽名。

(3)處理時間的演算法介面被稱為什麼擴展閱讀:

時間戳的分類:

1、自建時間戳:此類時間戳是通過時間接收設備(如GPS,CDMA,北斗衛星)來獲取時間到時間戳伺服器上,並通過時間戳伺服器簽發時間戳證書。

2、具有法律的效力的時間戳:它是由我國中科院國家授時中心與北京聯合信任技術服務有限公司負責建設的我國第三方可信時間戳認證服務。由國家授時中心負責時間的授時與守時監測。因其守時監測功能而保障時間戳證書中的時間的准確性和不被篡改。

參考資料來源:網路-時間戳

㈣ 數據處理演算法的常用對外介面

一、 並行介面 二、串列介面 三、USB 介面 四、IEEE 1394 介面 五、磁碟介面 此外還有藍牙介面,紅外線介面。
對外的介面:表示集合的抽象數據類型 介面的實現:指實現介面的java類,是可重用的數據結構 對集合運算的演算法:是指執行演算法的方法,例如在集合上進行查找和排序。
redisObject就是Redis對外暴露的第一層面的數據結構:string, list, hash, set, sorted set,而每一種數據結構的底層實現所對應的是哪些第二層面的數據結構。

㈤ 演算法時間復雜度指的是什麼

時間復雜性,又稱時間復雜度,演算法的時間復雜度是一個函數,它定性描述該演算法的運行時間。這是一個代表演算法輸入值的字元串的長度的函數。時間復雜度常用大O符號表述,不包括這個函數的低階項和首項系數。使用這種方式時,時間復雜度可被稱為是漸進的,亦即考察輸入值大小趨近無窮時的情況。

空間復雜性介紹

空間復雜性是指計算所需的存儲單元數量。隸屬於計算復雜性(計算復雜性由空間復雜性和時間復雜性兩部分組成)。演算法的復雜性是演算法運行所需要的計算機資源的量,需要時間資源量稱為時間復雜性,需要空間資源的量成為空間復雜性。

一個演算法的空間復雜度S(n)定義為該演算法所耗費的存儲空間,它也是問題規模n的函數。漸近空間復雜度也常常簡稱為空間復雜度。演算法的時間復雜度和空間復雜度合稱為演算法的復雜度。

㈥ 演算法的時間復雜度是指什麼

時間復雜性,又稱時間復雜度,演算法的時間復雜度是一個函數,它定性描述該演算法的運行時間。

這是一個代表演算法輸入值的字元串的長度的函數。時間復雜度常用大O符號表述,不包括這個函數的低階項和首項系數。使用這種方式時,時間復雜度可被稱為是漸進的,亦即考察輸入值大小趨近無窮時的情況。

相關介紹:

時間復雜度是同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程序的效率。演算法分析的目的在於選擇合適演算法和改進演算法。

空間復雜度是對一個演算法在運行過程中臨時佔用存儲空間大小的量度,記做S(n)=O(f(n))。比如直接插入排序的時間復雜度是O(n^2),空間復雜度是O(1) 。而一般的遞歸演算法就要有O(n)的空間復雜度了,因為每次遞歸都要存儲返回信息。一個演算法的優劣主要從演算法的執行時間和所需要佔用的存儲空間兩個方面衡量。

演算法的復雜性體現在運行該演算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間(即寄存器)資源,因此復雜度分為時間和空間復雜度。

㈦ linux環境下的進程調度演算法有哪些

第一部分: 實時調度演算法介紹

對於什麼是實時系統,POSIX 1003.b作了這樣的定義:指系統能夠在限定的響應時間內提供所需水平的服務。而一個由Donald Gillies提出的更加為大家接受的定義是:一個實時系統是指計算的正確性不僅取決於程序的邏輯正確性,也取決於結果產生的時間,如果系統的時間約束條件得不到滿足,將會發生系統出錯。

實時系統根據其對於實時性要求的不同,可以分為軟實時和硬實時兩種類型。硬實時系統指系統要有確保的最壞情況下的服務時間,即對於事件的響應時間的截止期限是無論如何都必須得到滿足。比如航天中的宇宙飛船的控制等就是現實中這樣的系統。其他的所有有實時特性的系統都可以稱之為軟實時系統。如果明確地來說,軟實時系統就是那些從統計的角度來說,一個任務(在下面的論述中,我們將對任務和進程不作區分)能夠得到有確保的處理時間,到達系統的事件也能夠在截止期限到來之前得到處理,但違反截止期限並不會帶來致命的錯誤,像實時多媒體系統就是一種軟實時系統。

一個計算機系統為了提供對於實時性的支持,它的操作系統必須對於CPU和其他資源進行有效的調度和管理。在多任務實時系統中,資源的調度和管理更加復雜。本文下面將先從分類的角度對各種實時任務調度演算法進行討論,然後研究普通的 Linux操作系統的進程調度以及各種實時Linux系統為了支持實時特性對普通Linux系統所做的改進。最後分析了將Linux操作系統應用於實時領域中時所出現的一些問題,並總結了各種實時Linux是如何解決這些問題的。

1. 實時CPU調度演算法分類

各種實時操作系統的實時調度演算法可以分為如下三種類別[Wang99][Gopalan01]:基於優先順序的調度演算法(Priority-driven scheling-PD)、基於CPU使用比例的共享式的調度演算法(Share-driven scheling-SD)、以及基於時間的進程調度演算法(Time-driven scheling-TD),下面對這三種調度演算法逐一進行介紹。

1.1. 基於優先順序的調度演算法

基於優先順序的調度演算法給每個進程分配一個優先順序,在每次進程調度時,調度器總是調度那個具有最高優先順序的任務來執行。根據不同的優先順序分配方法,基於優先順序的調度演算法可以分為如下兩種類型[Krishna01][Wang99]:

靜態優先順序調度演算法:

這種調度演算法給那些系統中得到運行的所有進程都靜態地分配一個優先順序。靜態優先順序的分配可以根據應用的屬性來進行,比如任務的周期,用戶優先順序,或者其它的預先確定的策略。RM(Rate-Monotonic)調度演算法是一種典型的靜態優先順序調度演算法,它根據任務的執行周期的長短來決定調度優先順序,那些具有小的執行周期的任務具有較高的優先順序。

動態優先順序調度演算法:

這種調度演算法根據任務的資源需求來動態地分配任務的優先順序,其目的就是在資源分配和調度時有更大的靈活性。非實時系統中就有很多這種調度演算法,比如短作業優先的調度演算法。在實時調度演算法中, EDF演算法是使用最多的一種動態優先順序調度演算法,該演算法給就緒隊列中的各個任務根據它們的截止期限(Deadline)來分配優先順序,具有最近的截止期限的任務具有最高的優先順序。

1.2. 基於比例共享調度演算法

雖然基於優先順序的調度演算法簡單而有效,但這種調度演算法提供的是一種硬實時的調度,在很多情況下並不適合使用這種調度演算法:比如象實時多媒體會議系統這樣的軟實時應用。對於這種軟實時應用,使用一種比例共享式的資源調度演算法(SD演算法)更為適合。

比例共享調度演算法指基於CPU使用比例的共享式的調度演算法,其基本思想就是按照一定的權重(比例)對一組需要調度的任務進行調度,讓它們的執行時間與它們的權重完全成正比。

我們可以通過兩種方法來實現比例共享調度演算法[Nieh01]:第一種方法是調節各個就緒進程出現在調度隊列隊首的頻率,並調度隊首的進程執行;第二種做法就是逐次調度就緒隊列中的各個進程投入運行,但根據分配的權重調節分配個每個進程的運行時間片。

比例共享調度演算法可以分為以下幾個類別:輪轉法、公平共享、公平隊列、彩票調度法(Lottery)等。

比例共享調度演算法的一個問題就是它沒有定義任何優先順序的概念;所有的任務都根據它們申請的比例共享CPU資源,當系統處於過載狀態時,所有的任務的執行都會按比例地變慢。所以為了保證系統中實時進程能夠獲得一定的CPU處理時間,一般採用一種動態調節進程權重的方法。

1.3. 基於時間的進程調度演算法

對於那些具有穩定、已知輸入的簡單系統,可以使用時間驅動(Time-driven:TD)的調度演算法,它能夠為數據處理提供很好的預測性。這種調度演算法本質上是一種設計時就確定下來的離線的靜態調度方法。在系統的設計階段,在明確系統中所有的處理情況下,對於各個任務的開始、切換、以及結束時間等就事先做出明確的安排和設計。這種調度演算法適合於那些很小的嵌入式系統、自控系統、感測器等應用環境。

這種調度演算法的優點是任務的執行有很好的可預測性,但最大的缺點是缺乏靈活性,並且會出現有任務需要被執行而CPU卻保持空閑的情況。

2. 通用Linux系統中的CPU調度

通用Linux系統支持實時和非實時兩種進程,實時進程相對於普通進程具有絕對的優先順序。對應地,實時進程採用SCHED_FIFO或者SCHED_RR調度策略,普通的進程採用SCHED_OTHER調度策略。

在調度演算法的實現上,Linux中的每個任務有四個與調度相關的參數,它們是rt_priority、policy、priority(nice)、counter。調度程序根據這四個參數進行進程調度。

在SCHED_OTHER 調度策略中,調度器總是選擇那個priority+counter值最大的進程來調度執行。從邏輯上分析,SCHED_OTHER調度策略存在著調度周期(epoch),在每一個調度周期中,一個進程的priority和counter值的大小影響了當前時刻應該調度哪一個進程來執行,其中 priority是一個固定不變的值,在進程創建時就已經確定,它代表了該進程的優先順序,也代表這該進程在每一個調度周期中能夠得到的時間片的多少; counter是一個動態變化的值,它反映了一個進程在當前的調度周期中還剩下的時間片。在每一個調度周期的開始,priority的值被賦給 counter,然後每次該進程被調度執行時,counter值都減少。當counter值為零時,該進程用完自己在本調度周期中的時間片,不再參與本調度周期的進程調度。當所有進程的時間片都用完時,一個調度周期結束,然後周而復始。另外可以看出Linux系統中的調度周期不是靜態的,它是一個動態變化的量,比如處於可運行狀態的進程的多少和它們priority值都可以影響一個epoch的長短。值得注意的一點是,在2.4以上的內核中, priority被nice所取代,但二者作用類似。

可見SCHED_OTHER調度策略本質上是一種比例共享的調度策略,它的這種設計方法能夠保證進程調度時的公平性--一個低優先順序的進程在每一個epoch中也會得到自己應得的那些CPU執行時間,另外它也提供了不同進程的優先順序區分,具有高priority值的進程能夠獲得更多的執行時間。

對於實時進程來說,它們使用的是基於實時優先順序rt_priority的優先順序調度策略,但根據不同的調度策略,同一實時優先順序的進程之間的調度方法有所不同:

SCHED_FIFO:不同的進程根據靜態優先順序進行排隊,然後在同一優先順序的隊列中,誰先准備好運行就先調度誰,並且正在運行的進程不會被終止直到以下情況發生:1.被有更高優先順序的進程所強佔CPU;2.自己因為資源請求而阻塞;3.自己主動放棄CPU(調用sched_yield);

SCHED_RR:這種調度策略跟上面的SCHED_FIFO一模一樣,除了它給每個進程分配一個時間片,時間片到了正在執行的進程就放棄執行;時間片的長度可以通過sched_rr_get_interval調用得到;

由於Linux系統本身是一個面向桌面的系統,所以將它應用於實時應用中時存在如下的一些問題:

Linux系統中的調度單位為10ms,所以它不能夠提供精確的定時;

當一個進程調用系統調用進入內核態運行時,它是不可被搶占的;

Linux內核實現中使用了大量的封中斷操作會造成中斷的丟失;

由於使用虛擬內存技術,當發生頁出錯時,需要從硬碟中讀取交換數據,但硬碟讀寫由於存儲位置的隨機性會導致隨機的讀寫時間,這在某些情況下會影響一些實時任務的截止期限;

雖然Linux進程調度也支持實時優先順序,但缺乏有效的實時任務的調度機制和調度演算法;它的網路子系統的協議處理和其它設備的中斷處理都沒有與它對應的進程的調度關聯起來,並且它們自身也沒有明確的調度機制;

3. 各種實時Linux系統

3.1. RT-Linux和RTAI

RT -Linux是新墨西哥科技大學(New Mexico Institute of Technology)的研究成果[RTLinuxWeb][Barabanov97]。它的基本思想是,為了在Linux系統中提供對於硬實時的支持,它實現了一個微內核的小的實時操作系統(我們也稱之為RT-Linux的實時子系統),而將普通Linux系統作為一個該操作系統中的一個低優先順序的任務來運行。另外普通Linux系統中的任務可以通過FIFO和實時任務進行通信。RT-Linux的框架如圖 1所示:

圖 1 RT-Linux結構

RT -Linux的關鍵技術是通過軟體來模擬硬體的中斷控制器。當Linux系統要封鎖CPU的中斷時時,RT-Linux中的實時子系統會截取到這個請求,把它記錄下來,而實際上並不真正封鎖硬體中斷,這樣就避免了由於封中斷所造成的系統在一段時間沒有響應的情況,從而提高了實時性。當有硬體中斷到來時, RT-Linux截取該中斷,並判斷是否有實時子系統中的中斷常式來處理還是傳遞給普通的Linux內核進行處理。另外,普通Linux系統中的最小定時精度由系統中的實時時鍾的頻率決定,一般Linux系統將該時鍾設置為每秒來100個時鍾中斷,所以Linux系統中一般的定時精度為 10ms,即時鍾周期是10ms,而RT-Linux通過將系統的實時時鍾設置為單次觸發狀態,可以提供十幾個微秒級的調度粒度。

RT-Linux實時子系統中的任務調度可以採用RM、EDF等優先順序驅動的演算法,也可以採用其他調度演算法。

RT -Linux對於那些在重負荷下工作的專有系統來說,確實是一個不錯的選擇,但他僅僅提供了對於CPU資源的調度;並且實時系統和普通Linux系統關系不是十分密切,這樣的話,開發人員不能充分利用Linux系統中已經實現的功能,如協議棧等。所以RT-Linux適合與工業控制等實時任務功能簡單,並且有硬實時要求的環境中,但如果要應用與多媒體處理中還需要做大量的工作。

義大利的RTAI( Real-Time Application Interface )源於RT-Linux,它在設計思想上和RT-Linux完全相同。它當初設計目的是為了解決RT-Linux難於在不同Linux版本之間難於移植的問題,為此,RTAI在 Linux 上定義了一個實時硬體抽象層,實時任務通過這個抽象層提供的介面和Linux系統進行交互,這樣在給Linux內核中增加實時支持時可以盡可能少地修改 Linux的內核源代碼。

3.2. Kurt-Linux

Kurt -Linux由Kansas大學開發,它可以提供微秒級的實時精度[KurtWeb] [Srinivasan]。不同於RT-Linux單獨實現一個實時內核的做法,Kurt -Linux是在通用Linux系統的基礎上實現的,它也是第一個可以使用普通Linux系統調用的基於Linux的實時系統。

Kurt-Linux將系統分為三種狀態:正常態、實時態和混合態,在正常態時它採用普通的Linux的調度策略,在實時態只運行實時任務,在混合態實時和非實時任務都可以執行;實時態可以用於對於實時性要求比較嚴格的情況。

為了提高Linux系統的實時特性,必須提高系統所支持的時鍾精度。但如果僅僅簡單地提高時鍾頻率,會引起調度負載的增加,從而嚴重降低系統的性能。為了解決這個矛盾, Kurt-Linux採用UTIME所使用的提高Linux系統中的時鍾精度的方法[UTIMEWeb]:它將時鍾晶元設置為單次觸發狀態(One shot mode),即每次給時鍾晶元設置一個超時時間,然後到該超時事件發生時在時鍾中斷處理程序中再次根據需要給時鍾晶元設置一個超時時間。它的基本思想是一個精確的定時意味著我們需要時鍾中斷在我們需要的一個比較精確的時間發生,但並非一定需要系統時鍾頻率達到此精度。它利用CPU的時鍾計數器TSC (Time Stamp Counter)來提供精度可達CPU主頻的時間精度。

對於實時任務的調度,Kurt-Linux採用基於時間(TD)的靜態的實時CPU調度演算法。實時任務在設計階段就需要明確地說明它們實時事件要發生的時間。這種調度演算法對於那些循環執行的任務能夠取得較好的調度效果。

Kurt -Linux相對於RT-Linux的一個優點就是可以使用Linux系統自身的系統調用,它本來被設計用於提供對硬實時的支持,但由於它在實現上只是簡單的將Linux調度器用一個簡單的時間驅動的調度器所取代,所以它的實時進程的調度很容易受到其它非實時任務的影響,從而在有的情況下會發生實時任務的截止期限不能滿足的情況,所以也被稱作嚴格實時系統(Firm Real-time)。目前基於Kurt-Linux的應用有:ARTS(ATM Reference Traffic System)、多媒體播放軟體等。另外Kurt-Linux所採用的這種方法需要頻繁地對時鍾晶元進行編程設置。

3.3. RED-Linux

RED -Linux是加州大學Irvine分校開發的實時Linux系統[REDWeb][ Wang99],它將對實時調度的支持和Linux很好地實現在同一個操作系統內核中。它同時支持三種類型的調度演算法,即:Time-Driven、 Priority-Dirven、Share-Driven。

為了提高系統的調度粒度,RED-Linux從RT-Linux那兒借鑒了軟體模擬中斷管理器的機制,並且提高了時鍾中斷頻率。當有硬體中斷到來時,RED-Linux的中斷模擬程序僅僅是簡單地將到來的中斷放到一個隊列中進行排隊,並不執行真正的中斷處理程序。

另外為了解決Linux進程在內核態不能被搶占的問題, RED-Linux在Linux內核的很多函數中插入了搶占點原語,使得進程在內核態時,也可以在一定程度上被搶占。通過這種方法提高了內核的實時特性。

RED-Linux的設計目標就是提供一個可以支持各種調度演算法的通用的調度框架,該系統給每個任務增加了如下幾項屬性,並將它們作為進程調度的依據:

Priority:作業的優先順序;

Start-Time:作業的開始時間;

Finish-Time:作業的結束時間;

Budget:作業在運行期間所要使用的資源的多少;

通過調整這些屬性的取值及調度程序按照什麼樣的優先順序來使用這些屬性值,幾乎可以實現所有的調度演算法。這樣的話,可以將三種不同的調度演算法無縫、統一地結合到了一起。

㈧ 什麼是IO介面

IO介面,又稱為輸入輸出介面,是信息處理系統(例如計算機)與外部世界(可能是人類或另一個信息處理系統)之間的通信。輸入是系統接收的信號或數據,輸出是從其發送的信號或數據。該術語也可以用作行動的一部分;到「執行I / O」是執行輸入或輸出操作。

I / O設備是件硬體中使用由人(或其他系統)與計算機進行通信。例如,鍵盤或計算機滑鼠是計算機的輸入設備,而監視器和列印機是輸出設備。計算機之間的通信設備(如數據機和網卡)通常執行輸入和輸出操作。

將設備指定為輸入或輸出取決於視角。滑鼠和鍵盤採用人體用戶輸出的物理動作,並將其轉換為計算機可以理解的輸入信號;這些設備的輸出是計算機的輸入。同樣,列印機和監視器將計算機輸出的信號作為輸入,並將這些信號轉換為人類用戶可以理解的表示。從用戶的角度來看,閱讀或查看這些表示的過程正在接受輸入;人機交互領域研究了計算機與人類之間的這種類型的交互。

(8)處理時間的演算法介面被稱為什麼擴展閱讀:

在計算機體系結構中,CPU和主存儲器的組合(CPU可以使用單獨的指令直接讀取或寫入)被認為是計算機的大腦。任何信息傳入或傳出CPU /內存組合,例如通過從磁碟驅動器讀取數據,被認為是I / O。[1]CPU及其支持電路可以提供用於低級計算機編程的存儲器映射I / O,例如用於實現設備驅動程序,或者可以提供對I / O通道的訪問。一種I / O演算法是設計用於在與輔助存儲設備(如磁碟驅動器)交換數據時充分利用本地性和高效執行的設計。

㈨ 演算法的時間復雜度是指什麼

就是對演算法執行時所花時間的度量。一般為問題規模的函數。

計算機科學中,演算法的時間復雜度是一個函數,它定量描述了該演算法的運行時間。這是一個關於代表演算法輸入值的字元串的長度的函數。時間復雜度常用大O符號表述,不包括這個函數的低階項和首項系數。使用這種方式時,時間復雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。

演算法復雜度分為時間復雜度和空間復雜度。其作用: 時間復雜度是指執行演算法所需要的計算工作量;而空間復雜度是指執行這個演算法所需要的內存空間。演算法的復雜性體現在運行該演算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間資源,因此復雜度分為時間和空間復雜度。

相關內容解釋:

函數在數學上的定義:給定一個非空的數集A,對A施加對應法則f,記作f(A),得到另一數集B,也就是B=f(A)。那麼這個關系式就叫函數關系式,簡稱函數。

簡單來講,對於兩個變數x和y,如果每給定x的一個值,y都有唯一一個確定的值與其對應,那麼我們就說y是x的函數。其中,x叫做自變數,y叫做因變數。

㈩ 線性時間是什麼意思

在計算復雜性理論,一個被稱為線性時間或 Ο(n)時間的演算法,表示此演算法解題所需時間正比於輸入資料的大小,通常以n表示。換句話說,執行時間與輸入資料大小為線性比例。例如將一列數字加總的所需時間,正比於串列的長度。
然而實際情況常有差距,真實的執行時間很可能與預期的比率相差甚大,尤其在n的值很小時。在技術討論時,在足夠大的量n之下演算法的執行時間從an到bn(a、b為正實數)時,就可稱線性時間。詳情請看大O符號。
達到線性時間的執行效能通常是一個演算法的最佳目標。很多學者研究並創造了許多接近線性或更佳的演算法,包括了軟體或硬體方面的研究。硬體方面,藉由諸如平行運算的硬體架構,使得某些數學認為無法在標准計算模型下達到線性時間的演算法,現在都可以在線性時間內執行完畢。例如內容可定址內存(Content-addressable memory)。
某些排序演算法可以在特殊的數據結構及排列下擁有線性時間的效率。但在一般情況下以比較元素大小來排序的演算法,最多隻能到達Ο(nlog(n))。最低限度復雜性的證明已被小O符號含括;通用排序演算法被認為是Ω(n log(n))。另外,要找到一個集合中最大的元素是 Ω(n),因為演算法必須至少比較過(n-1)次才能找到最大元素。
任何必須依賴全部輸入內容才能得解的問題,它最少也得要線性時間才能得解,因為它至少得花線性時間來讀取輸入資料。

熱點內容
為什麼心臟不好喝點酒 發布:2022-10-04 18:38:04 瀏覽:749
貓咪為什麼晚上顏值更高 發布:2022-10-04 18:37:18 瀏覽:458
為什麼今年要有兩次退伍時間 發布:2022-10-04 18:36:26 瀏覽:860
周傑倫為什麼現在和以前不一樣了 發布:2022-10-04 18:36:19 瀏覽:341
為什麼手機保底費用不消號 發布:2022-10-04 18:25:04 瀏覽:334
孩子為什麼總動手打人 發布:2022-10-04 18:24:50 瀏覽:788
男人為什麼會討厭女人流眼淚 發布:2022-10-04 18:23:03 瀏覽:590
手機克隆為什麼一直顯示聲波連接 發布:2022-10-04 18:22:57 瀏覽:39
為什麼說寡婦女人不能碰 發布:2022-10-04 18:22:01 瀏覽:729
晚上不知道為什麼會莫名其妙的哭 發布:2022-10-04 18:21:47 瀏覽:818