為分析影響Linux即時性構建的任務響應模型

來源:互聯網
上載者:User

為分析影響Linux即時性構建的任務響應模型

在介紹影響linux即時性任務調度執行之前,我們先來看下一個簡化的Linux任務響應模型,瞭解下哪些因素會影響Linux的即時性。這些有利於理解後面說道的即時性改進。

Linux即時化的最終目標是要滿足即時任務快速的有期限回應時間要求。一個即時任務的一次運行(即時任務一般都是周期性的)是由外部中斷觸發的(比如每隔1ms要發送一幀GOOSE報文),當中斷產生的時候,CPU接收到中斷訊號,如果CPU當前允許中斷(如果不允許,則直到允許中斷後才處理中斷),儲存當前啟動並執行任務跳轉到中斷服務程式,執行中斷服務程式(在中斷服務程式中喚醒即時任務),然後執行中斷返回,如果當前系統允許進行進程調度,則調度即時任務開始運行(假定這個即時任務的優先順序最高)。為了更好的理解Linux即時化的基本原理,我們有必要對Linux的任務響應模型作詳細的分析,如1所示,給出了一個簡化的Linux任務響應模型。

 

 

 

圖1 Linux任務響應模型(時間段長度不是按比例繪製的)

任務響應模型中,任務2(可以看成Linux內的軟即時任務)的優先順序高於任務1。t0時刻任務1在運行,而任務2處於睡眠狀態,等待中斷喚醒;t1時刻任務1請求系統服務完成某些操作(例如通過read()檔案介面讀取磁碟上的檔案等),此時開始,系統在核心態運行;在t2時刻,產生一個中斷(在這個中斷的中斷服務程式中喚醒任務2),但可能由於系統在核心態進行某些操作不希望被中斷, CPU的處理中斷被禁止,那麼這個中斷訊號沒有立刻得到響應,而是繼續在核心態執行系統服務;在t3時刻,核心態代碼使能中斷響應(Linux核心退出臨界區),這個時候CPU開始響應在t2時刻產生的中斷,並從t4時刻開始執行中斷服務程式;當中斷服務程式執行完之後(在這個中斷服務程式中喚醒了任務2),返回被中斷的代碼,由於此時系統運行在核心態(執行任務1的系統服務要求),任務2無法搶佔任務1的控制權,所以執行任務1的系統服務要求;在t7時刻,由於任務1的系統調用完成返回或者在執行系統服務的過程中主動請求任務調度,系統開始進行任務調度,並在時刻t8運行任務2(假定此時任務2是系統內最高優先順序的任務)。

其中,從時刻t2至時刻t8這個時間段,就是我們所說的任務響應延遲時間(Task Response Time);從圖可以看出,任務的響應延遲時間可以分為以下幾個部分:

1.1中斷潛伏期(Interrupt Latency)或者說中斷延遲,這個指從中斷產生到CPU開始響應中斷的時間段,也就是圖中從t2至t3的時間段。中斷潛伏期是由於核心在進入臨界區前關閉CPU的中斷響應所引起的,在這個時間段內,雖然外部裝置使CPU的插斷要求線有效,但CPU並不立刻響應中斷,而是繼續執行臨界區的核心代碼,直至退出臨界區、使能插斷要求,才開始進行中斷的響應。當然,還需要注意的一點是,中斷潛伏期實際上包含了硬體所產生的中斷延遲時間,我們一般所研究的是如何最大限度的減少軟體所造成的延遲時間,所以,如果沒有特別說明,我們是不考慮硬體所產生的延遲(但實際上,在工程應用中,當經過軟體的最佳化還不能滿足系統即時性的要求時,唯一的辦法就只有提高硬體的處理速度了)。(這可以通過作業系統的實現來進行改進)。

1、2中斷分發階段(中斷準備階段),這個指從CPU開始響應插斷要求到開始執行中斷服務程式之間的時間段,也就是圖中從t3至t4的時間段。這個期間系統要做的主要操作包括尋找中斷號、儲存寄存器、定位中斷服務程式等。這個時間段的長度對於具體的平台來說,一般是確定性,也就是說時間長度是固定的。另外,從中斷產生到開始執行中斷服務程式之間的時間段被稱為中斷響應延遲時間(Interrupt Response Time),對應於圖中t2至t4的時間段。

1、3中斷服務階段,這個指從系統開始執行中斷服務程式到中斷服務程式執行完的時間段,也就是圖中t4至t5的時間段。這個時間段的長度與具體的中斷或者說具體的應用有關,也就是說,這個時間段的長度是可以控制的。(中斷服務程式應盡量短小不能影響包含過多的任務內容,只負責任務喚醒)

1、4中斷返回階段,這個指從中斷服務程式執行完到恢複被中斷代碼開始啟動並執行時間段,也就是圖中t5至t6的時間段。這個期間系統要做的主要操作是恢複寄存器的值,這個時間段長度一般也是固定的。

1、5調度潛伏期(Schedule Latency)或者說調度延遲,這個指從系統需要進行進程調度(當前進程的進程結構中need_resched的值為1)到實際開始進行調度的時間段,也就是圖中t6至t7的時間段。由於Linux2.6核心中有些地方是不可以搶佔的,當系統運行在核心空間中時,即使有更高優先順序的進程需要運行,除非主動請求進行調度,否則高優先順序的進程是無法搶佔當前進程啟動並執行;所以,只有等到低優先順序進程的系統調用完成或主動請求調度的時候,才能進行進程的調度。(這可以通過作業系統的實現來進行改進)。

1、6進程調度時間,這個指從系統開始進行調度到最高優先順序的進程開始被調度啟動並執行時間段,也就是圖中t7至t8的時間段。在這個期間,系統主要是根據系統資源的利用情況、進程的優先順序、進程的運行情況,選擇合適的進程進行調度。(這可以通過作業系統的實現來進行改進)。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.