(Interrupt Latency) 中断延迟
中斷延遲
?(Interrupt Latency) 中斷延遲
是指從硬件中斷發生到開始執行中斷處理程序第一條指令之間的這段時間。
也就是:
計算機接收到中斷信號到操作系統作出響應,并完成換到轉入中斷服務程序的時間。
不嚴格地,也可以表述為:
(外部)硬件(設備)發生中斷,到系統執行中斷服務子程序(ISR)的第一條指令的時間。
另外,如果盡可能嚴格地考慮問題,那么還要考慮下列情況:
1.中斷的詳細情況就是:外界硬件發生了中斷后,CPU到中斷處理器讀取中斷向量,并且查找中斷向量表,
找到對應的中斷服務子程序(ISR)的首地址,然后跳轉到對應的ISR去做相應處理。
此部分時間,我稱其為:識別中斷時間
2.在允許中斷嵌套的實時操作系統中,中斷也是基于優先級的,允許高優先級中斷搶斷正在處理的低優先級中斷,
如ucOS/II,所以,如果當前正在處理更高優先級的中斷,即使此時有低優先級的中斷,
也系統不會立刻響應,而是等到高優先級的中斷處理完之后,才會響應。
而即使在不支持中斷嵌套,即中斷是沒有優先級的,中斷是不允許被中斷的,所以,如果當前系統正在處理一個中斷,
而此時另一個中斷到來了,系統也是不會立即響應的,而只是等處理完當前的中斷之后,才會處理后來的中斷。
此部分時間,我稱其為:等待中斷打開時間
3.在嵌入式系統中,如ucOS/II,(其他類似系統中也有此情況),
常用開關中斷來實現共享區的互斥訪問。
如:
//利用μC/OS_Ⅱ 宏調用關中斷和開中斷
void Function (void)
{
???? OS_ENTER_CRITICAL(); //關閉中斷
???? .
???? .??
???? .
??? OS_EXIT_CRITICAL(); //打開中斷
}
所以,會出現這種情況:當前中斷來了,但由于之前某個程序訪問共享區,
而關閉中斷了,導致當前中斷得不到處理。而只有等待其訪問完成共享區之后,再開中斷。
(不過,一般來說,關中斷的時間都很短,否則也就不適合用開關中斷的方法來實現共享區互斥訪問,
而應該用信號量或者其他手段實現。因為關中斷時間長短,是衡量一個實時系統性能好壞的一個重要指標)
此部分時間,我稱其為:關閉中斷時間
4.其他的有待高人補充。
所以,總的中斷延遲時間就可以表示為:
中斷延遲 = 識別中斷時間 + [等待中斷打開時間] + [關閉中斷時間]
當然,對于2,3兩種情況,很多時候,并沒有遇到,所以,一般多為中斷延遲等于識別中斷時間。
注:對于保存所要用到的寄存器內容或稱保存現場,保存上下文等,此處也叫 中斷前導,
并且做相應中斷處理,
在處理完之后,進行恢復,此處也叫中斷后續,
這些工作,是在中斷處理子程序ISR完成的
總結
以上是生活随笔為你收集整理的(Interrupt Latency) 中断延迟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 喋血复仇怎么设置中文?
- 下一篇: 嵌入式系统开发过程中遇到的——volat