實時中斷延遲

2022-08-11 17:51:11 字數 1567 閱讀 6374

由於外部事件的發生常常是以乙個中斷申請訊號的形式來通知處理器,然後才執行中斷服務程式中來處理該事件,所以中斷延時是影響系統實時性的乙個重要因素。那麼都有哪些問題影響中斷延時呢?

一般情況下,都認為處理器是隨時可以響應中斷申請的。其實並非如此,首先在處理器關閉中斷時不能響應中斷申請;另外處理器在正在執行一條指令時也不能響應中斷申請。因此,當某個事件向處理器發出中斷請求時,處理器可能正在執行另外乙個中斷服務程式。如果為了保證操作的原子性,正在被執行的中斷服務程式關閉了中斷,那麼處理器在這期間就不會響應具有更高優先順序別的中斷請求。通常,具有高優先順序別的中斷請求往往對應著更緊急的實時任務,那麼上面的情況就意味著緊急事情要等不太緊急的事情做完才能做,這對於緊急事情來說就是乙個延時,低階中斷服務程式關閉中斷時間越長,這段延時也就越長,對緊急任務的及時處理就越不利。所以在為實時系統設計軟體尤其是設計作業系統的中斷服務程式時,必須對關中斷的時間進行精心的控制,儘量減少中斷巢狀時對高優先級別中斷的延時。例如,在linux系統中,為了減少因中斷服務程式關中斷而引起的高優先級別中斷的延時,把中斷服務程式分成了前後兩部分,把必須在關中斷狀態進行的任務放在前半部分並使其盡可能短,而把大多數工作放在了中斷開放的後半部分。

有時,排程器引起的排程延時也會反映到中斷延時中,因為中斷的服務有時是用乙個程序來完成的。也就是說,在中斷服務程式中通過傳送訊息的方法啟用乙個程序,並在這個被啟用的程序中完成中斷所應提供的服務。既然是要啟用乙個程序,排程器就要進行排程,於是排程器在排程時的延時也就自然反映到這次中斷延時中了。

這種排程的延時比較複雜,它由兩部分組成:一部分是排程器在排程工作時所必須耗費的時間;一部分是排程器等待排程所需要的時間。在概念上,第一部分引起的延時比較清楚,麻煩的是第二部分的延時。因為在作業系統中,在中斷過程中是不允許程序排程的,也就是說,從中斷處理器執行的優先順序別的角度來看,中斷的優先權是大於所有程序的,所以排程器只能等待所有中斷服務都結束之後才能進行程序排程。如果中斷巢狀的層次很多,那麼這個延時的長度就很可觀了。

顯然,由上述排程延時引起的中斷服務延時的大小取決於系統的負荷,而且這種延時的可**性極差。其實,如果對這種工作方式不謹慎規劃,還會出現另外一些更複雜情況而大大增加中斷延時,這也正是設計實時系統的難點之一。

除了上述造成中斷延時的因素之外,還有乙個可能的因素就是dma。有些計算機系統為了增加記憶體資料塊的傳送速度,使用了直接資料傳送控制器dma。其實,dma請求也是一種中斷,只不過它向處理器請求的是匯流排的控制權,而不是處理器罷了。所以,在dma控制期間,由於處理器要把匯流排控制權讓給dma而失去匯流排控制權,儘管處理器還可以做一些不使用匯流排的工作,但肯定不會馬上響應來自匯流排的外部中斷請求,因此也會造成較大的中斷延時。

正因為dma有提高系統工作速度的一面,也有造成中斷延時過長而降低中斷響應速度一面,所以在實時系統中是否以及如何使用dma技術,在設計系統時要慎重考慮。一般在實時性要求較高的硬實時系統中不要使用dma。

另外,實時計算機系統最好採用risc指令系統有兩個原因:一是risc指令系統的指令執行時間要比cisc系統指令短得多,所以指令執行時間所引起的中斷延時也會小得多;二是 在cisc指令系統中,指令的執行時間極為不均勻,短的指令只需要幾個時鐘脈衝,長的指令 卻需要幾十個脈衝才能執行完成,這就給一段程式模組執行時間的**帶來了困難,使之難於 滿足實時系統執行時間可**的要求。

飛思卡爾RTI實時中斷模組

實時中斷就是乙個定時模組,定時溢位,產生中斷。第一步,實時中斷rti 在預設情況下是關閉的,怎樣才能讓 rti 工作呢?這就用到實時中斷控制暫存器 rtictl 了。rtictl是乙個八位暫存器,第七位沒定義,只用到低七位 rtr6 rtr0 當rtr 6 4 000時,實時中斷被禁止,只要當rtr...

實時中位數

現有一些隨機生成的數字要將其依次傳入,請設計乙個高效演算法,對於每次傳入乙個數字後,算出當前所有傳入數字的中位數。若傳入了偶數個數字則令中位數為第n 2小的數字,n為已傳入數字個數 給定乙個int陣列a,為傳入的數字序列,同時給定序列大小n,請返回乙個int陣列,代表每次傳入後的中位數。保證n小於等...

實時中位數

題目描述 現有一些隨機生成的數字要將其依次傳入,請設計乙個高效演算法,對於每次傳入乙個數字後,算出當前所有傳入數字的中位數。若傳入了偶數個數字則令中位數為第n 2小的數字,n為已傳入數字個數 給定乙個int陣列a,為傳入的數字序列,同時給定序列大小n,請返回乙個int陣列,代表每次傳入後的中位數。保...