實(shí)時(shí)操作系統(tǒng)中斷延時(shí)盡可能小
發(fā)布時(shí)間:2009/1/17 0:00:00 訪問次數(shù):734
由于外部事件的發(fā)生常常是以一個(gè)中斷申請信號的形式來通知處理器,然后才運(yùn)行中斷服務(wù)程序中來處理該事件,所以中斷延時(shí)是影響系統(tǒng)實(shí)時(shí)性的一個(gè)重要因素。那么都有哪些問題影響中斷延時(shí)呢?
一般情況下,都認(rèn)為處理器是隨時(shí)可以響應(yīng)中斷申請的。其實(shí)并非如此,首先在處理器關(guān)閉中斷時(shí)不能響應(yīng)中斷申請;另外處理器在正在執(zhí)行一條指令時(shí)也不能響應(yīng)中斷申請。因此,當(dāng)某個(gè)事件向處理器發(fā)出中斷請求時(shí),處理器可能正在執(zhí)行另外一個(gè)中斷服務(wù)程序。如果為了保證操作的原子性,正在被執(zhí)行的中斷服務(wù)程序關(guān)閉了中斷,那么處理器在這期間就不會(huì)響應(yīng)具有更高優(yōu)先級別的中斷請求。通常,具有高優(yōu)先級別的中斷請求往往對應(yīng)著更緊急的實(shí)時(shí)任務(wù),那么上面的情況就意味著緊急事情要等不太緊急的事情做完才能做,這對于緊急事情來說就是一個(gè)延時(shí),低級中斷服務(wù)程序關(guān)閉中斷時(shí)間越長,這段延時(shí)也就越長,對緊急任務(wù)的及時(shí)處理就越不利。所以在為實(shí)時(shí)系統(tǒng)設(shè)計(jì)軟件尤其是設(shè)計(jì)操作系統(tǒng)的中斷服務(wù)程序時(shí),必須對關(guān)中斷的時(shí)間進(jìn)行精心的控制,盡量減少中斷嵌套時(shí)對高優(yōu)先級別中斷的延時(shí)。例如,在linux系統(tǒng)中,為了減少因中斷服務(wù)程序關(guān)中斷而引起的高優(yōu)先級別中斷的延時(shí),把中斷服務(wù)程序分成了前后兩部分,把必須在關(guān)中斷狀態(tài)進(jìn)行的任務(wù)放在前半部分并使其盡可能短,而把大多數(shù)工作放在了中斷開放的后半部分。
有時(shí),調(diào)度器引起的調(diào)度延時(shí)也會(huì)反映到中斷延時(shí)中,因?yàn)橹袛嗟姆⻊?wù)有時(shí)是用一個(gè)進(jìn)程來完成的。也就是說,在中斷服務(wù)程序中通過發(fā)送消息的方法激活一個(gè)進(jìn)程,并在這個(gè)被激活的進(jìn)程中完成中斷所應(yīng)提供的服務(wù)。既然是要激活一個(gè)進(jìn)程,調(diào)度器就要進(jìn)行調(diào)度,于是調(diào)度器在調(diào)度時(shí)的延時(shí)也就自然反映到這次中斷延時(shí)中了。
這種調(diào)度的延時(shí)比較復(fù)雜,它由兩部分組成:一部分是調(diào)度器在調(diào)度工作時(shí)所必須耗費(fèi)的時(shí)間;一部分是調(diào)度器等待調(diào)度所需要的時(shí)間。在概念上,第一部分引起的延時(shí)比較清楚,麻煩的是第二部分的延時(shí)。因?yàn)樵诓僮飨到y(tǒng)中,在中斷過程中是不允許進(jìn)程調(diào)度的,也就是說,從中斷處理器執(zhí)行的優(yōu)先級別的角度來看,中斷的優(yōu)先權(quán)是大于所有進(jìn)程的,所以調(diào)度器只能等待所有中斷服務(wù)都結(jié)束之后才能進(jìn)行進(jìn)程調(diào)度。如果中斷嵌套的層次很多,那么這個(gè)延時(shí)的長度就很可觀了。
顯然,由上述調(diào)度延時(shí)引起的中斷服務(wù)延時(shí)的大小取決于系統(tǒng)的負(fù)荷,而且這種延時(shí)的可預(yù)測性極差。其實(shí),如果對這種工作方式不謹(jǐn)慎規(guī)劃,還會(huì)出現(xiàn)另外一些更復(fù)雜情況而大大增加中斷延時(shí),這也正是設(shè)計(jì)實(shí)時(shí)系統(tǒng)的難點(diǎn)之一。
除了上述造成中斷延時(shí)的因素之外,還有一個(gè)可能的因素就是dma。有些計(jì)算機(jī)系統(tǒng)為了增加內(nèi)存數(shù)據(jù)塊的傳送速度,使用了直接數(shù)據(jù)傳送控制器dma。其實(shí),dma請求也是一種中斷,只不過它向處理器請求的是總線的控制權(quán),而不是處理器罷了。所以,在dma控制期間,由于處理器要把總線控制權(quán)讓給dma而失去總線控制權(quán),盡管處理器還可以做一些不使用總線的工作,但肯定不會(huì)馬上響應(yīng)來自總線的外部中斷請求,因此也會(huì)造成較大的中斷延時(shí)。
正因?yàn)閐ma有提高系統(tǒng)工作速度的一面,也有造成中斷延時(shí)過長而降低中斷響應(yīng)速度一面,所以在實(shí)時(shí)系統(tǒng)中是否以及如何使用dma技術(shù),在設(shè)計(jì)系統(tǒng)時(shí)要慎重考慮。一般在實(shí)時(shí)性要求較高的硬實(shí)時(shí)系統(tǒng)中不要使用dma。
另外,實(shí)時(shí)計(jì)算機(jī)系統(tǒng)最好采用risc指令系統(tǒng)有兩個(gè)原因:一是risc指令系統(tǒng)的指令執(zhí)行時(shí)間要比cisc系統(tǒng)指令短得多,所以指令執(zhí)行時(shí)間所引起的中斷延時(shí)也會(huì)小得多;二是 在cisc指令系統(tǒng)中,指令的執(zhí)行時(shí)間極為不均勻,短的指令只需要幾個(gè)時(shí)鐘脈沖,長的指令 卻需要幾十個(gè)脈沖才能執(zhí)行完成,這就給一段程序模塊執(zhí)行時(shí)間的預(yù)測帶來了困難,使之難于 滿足實(shí)時(shí)系統(tǒng)執(zhí)行時(shí)間可預(yù)測的要求。
歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(www.dzsc.com)
由于外部事件的發(fā)生常常是以一個(gè)中斷申請信號的形式來通知處理器,然后才運(yùn)行中斷服務(wù)程序中來處理該事件,所以中斷延時(shí)是影響系統(tǒng)實(shí)時(shí)性的一個(gè)重要因素。那么都有哪些問題影響中斷延時(shí)呢?
一般情況下,都認(rèn)為處理器是隨時(shí)可以響應(yīng)中斷申請的。其實(shí)并非如此,首先在處理器關(guān)閉中斷時(shí)不能響應(yīng)中斷申請;另外處理器在正在執(zhí)行一條指令時(shí)也不能響應(yīng)中斷申請。因此,當(dāng)某個(gè)事件向處理器發(fā)出中斷請求時(shí),處理器可能正在執(zhí)行另外一個(gè)中斷服務(wù)程序。如果為了保證操作的原子性,正在被執(zhí)行的中斷服務(wù)程序關(guān)閉了中斷,那么處理器在這期間就不會(huì)響應(yīng)具有更高優(yōu)先級別的中斷請求。通常,具有高優(yōu)先級別的中斷請求往往對應(yīng)著更緊急的實(shí)時(shí)任務(wù),那么上面的情況就意味著緊急事情要等不太緊急的事情做完才能做,這對于緊急事情來說就是一個(gè)延時(shí),低級中斷服務(wù)程序關(guān)閉中斷時(shí)間越長,這段延時(shí)也就越長,對緊急任務(wù)的及時(shí)處理就越不利。所以在為實(shí)時(shí)系統(tǒng)設(shè)計(jì)軟件尤其是設(shè)計(jì)操作系統(tǒng)的中斷服務(wù)程序時(shí),必須對關(guān)中斷的時(shí)間進(jìn)行精心的控制,盡量減少中斷嵌套時(shí)對高優(yōu)先級別中斷的延時(shí)。例如,在linux系統(tǒng)中,為了減少因中斷服務(wù)程序關(guān)中斷而引起的高優(yōu)先級別中斷的延時(shí),把中斷服務(wù)程序分成了前后兩部分,把必須在關(guān)中斷狀態(tài)進(jìn)行的任務(wù)放在前半部分并使其盡可能短,而把大多數(shù)工作放在了中斷開放的后半部分。
有時(shí),調(diào)度器引起的調(diào)度延時(shí)也會(huì)反映到中斷延時(shí)中,因?yàn)橹袛嗟姆⻊?wù)有時(shí)是用一個(gè)進(jìn)程來完成的。也就是說,在中斷服務(wù)程序中通過發(fā)送消息的方法激活一個(gè)進(jìn)程,并在這個(gè)被激活的進(jìn)程中完成中斷所應(yīng)提供的服務(wù)。既然是要激活一個(gè)進(jìn)程,調(diào)度器就要進(jìn)行調(diào)度,于是調(diào)度器在調(diào)度時(shí)的延時(shí)也就自然反映到這次中斷延時(shí)中了。
這種調(diào)度的延時(shí)比較復(fù)雜,它由兩部分組成:一部分是調(diào)度器在調(diào)度工作時(shí)所必須耗費(fèi)的時(shí)間;一部分是調(diào)度器等待調(diào)度所需要的時(shí)間。在概念上,第一部分引起的延時(shí)比較清楚,麻煩的是第二部分的延時(shí)。因?yàn)樵诓僮飨到y(tǒng)中,在中斷過程中是不允許進(jìn)程調(diào)度的,也就是說,從中斷處理器執(zhí)行的優(yōu)先級別的角度來看,中斷的優(yōu)先權(quán)是大于所有進(jìn)程的,所以調(diào)度器只能等待所有中斷服務(wù)都結(jié)束之后才能進(jìn)行進(jìn)程調(diào)度。如果中斷嵌套的層次很多,那么這個(gè)延時(shí)的長度就很可觀了。
顯然,由上述調(diào)度延時(shí)引起的中斷服務(wù)延時(shí)的大小取決于系統(tǒng)的負(fù)荷,而且這種延時(shí)的可預(yù)測性極差。其實(shí),如果對這種工作方式不謹(jǐn)慎規(guī)劃,還會(huì)出現(xiàn)另外一些更復(fù)雜情況而大大增加中斷延時(shí),這也正是設(shè)計(jì)實(shí)時(shí)系統(tǒng)的難點(diǎn)之一。
除了上述造成中斷延時(shí)的因素之外,還有一個(gè)可能的因素就是dma。有些計(jì)算機(jī)系統(tǒng)為了增加內(nèi)存數(shù)據(jù)塊的傳送速度,使用了直接數(shù)據(jù)傳送控制器dma。其實(shí),dma請求也是一種中斷,只不過它向處理器請求的是總線的控制權(quán),而不是處理器罷了。所以,在dma控制期間,由于處理器要把總線控制權(quán)讓給dma而失去總線控制權(quán),盡管處理器還可以做一些不使用總線的工作,但肯定不會(huì)馬上響應(yīng)來自總線的外部中斷請求,因此也會(huì)造成較大的中斷延時(shí)。
正因?yàn)閐ma有提高系統(tǒng)工作速度的一面,也有造成中斷延時(shí)過長而降低中斷響應(yīng)速度一面,所以在實(shí)時(shí)系統(tǒng)中是否以及如何使用dma技術(shù),在設(shè)計(jì)系統(tǒng)時(shí)要慎重考慮。一般在實(shí)時(shí)性要求較高的硬實(shí)時(shí)系統(tǒng)中不要使用dma。
另外,實(shí)時(shí)計(jì)算機(jī)系統(tǒng)最好采用risc指令系統(tǒng)有兩個(gè)原因:一是risc指令系統(tǒng)的指令執(zhí)行時(shí)間要比cisc系統(tǒng)指令短得多,所以指令執(zhí)行時(shí)間所引起的中斷延時(shí)也會(huì)小得多;二是 在cisc指令系統(tǒng)中,指令的執(zhí)行時(shí)間極為不均勻,短的指令只需要幾個(gè)時(shí)鐘脈沖,長的指令 卻需要幾十個(gè)脈沖才能執(zhí)行完成,這就給一段程序模塊執(zhí)行時(shí)間的預(yù)測帶來了困難,使之難于 滿足實(shí)時(shí)系統(tǒng)執(zhí)行時(shí)間可預(yù)測的要求。
歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(www.dzsc.com)
熱門點(diǎn)擊
- ARM通用寄存器
- PIE中斷向量的映射方式
- PIE模塊級中斷
- ARM復(fù)位原理
- FIQ異常的描述
- ARM硬件電路設(shè)計(jì)
- ARM程序狀態(tài)寄存器
- ARM時(shí)序
- 什么是嵌入式實(shí)時(shí)操作系統(tǒng)
- 計(jì)算機(jī)操作系統(tǒng)調(diào)度策略(箅法)
推薦技術(shù)資料
- DFRobot—玩的就是
- 如果說新車間的特點(diǎn)是“靈動(dòng)”,F(xiàn)QPF12N60C那么... [詳細(xì)]
- 電磁與聲學(xué)結(jié)合混合濾波技術(shù)(H
- 超高性能芯片式電磁濾波技術(shù)(S
- 紫、藍(lán)、綠光激光二極管工藝封測
- SPICE模型ROHM Lev
- 高性能碳化硅(SiC)MOS功
- 新一代光纖通信的光收發(fā)器接收器
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究