中斷處理過程的五個階段:1、中斷請求階段;2、中斷判優階段,有硬體判優和軟體判優兩種方法;3、中斷回應階段,CPU向中斷源發出中斷回應訊號;4、中斷服務階段;5、中斷返回階段,返回原程序的斷點處,恢復硬體現場,繼續執行原程序。
本教學操作環境:windows7系統、Dell G3電腦。
中斷處理的基本流程包括中斷請求、中斷判優、中斷回應、中斷服務 和中斷返回等五個階段。
1)發生在CPU內部的中斷(內部中斷),不需要中斷要求, CPU內部的中斷控制邏輯直接接收處理。
2)外部中斷請求由中斷來源提出。外部中斷來源利用CPU的中斷輸入接腳 輸入中斷請求訊號。一般CPU設有兩個中斷請求輸入接腳:可屏蔽中斷請求輸入接腳和不可屏蔽中斷請求輸入接腳。
每個中斷源發中斷請求訊號的時間是不確定的,而CPU在何時回應中斷也是不確定的。所以,每個中斷來源都有中斷請求觸發器,鎖存自己的中斷請求訊號,並保持到CPU回應這個中斷請求之後才清除。
在CPU內部有一個中斷允許觸發器,當其為「1」時,允許CPU回應中斷, 稱為開中斷。若其為“0”,不允許CPU回應中斷,中斷被屏蔽,稱為關中斷。
%%通常,當CPU重設時,中斷允許觸發器也重設為“0”,即關中斷。當 CPU中斷回應時,CPU自動關閉中斷,禁止接受另一個新的中斷。
%%中斷允許觸發器的狀態可以用開中斷或關中斷指令來設定。
CPU一次只能接受一個中斷來源的請求,當多個中斷來源同時向CPU提出中斷請求時,CPU必須找出中斷優先權最高的中斷源,這個過程稱為中斷判優。
中斷判優可以採用硬體方法,也可採用軟體方法。
CPU偵測到中斷要求後,首先讀取中斷請求暫存器的內容,逐位元偵測它們的狀態,偵測到某一位為1,就確定對應的中斷源有中斷請求,轉去執行它的中斷服務程序。
先偵測哪一個,哪一個的優先權就高,後偵測哪一個,哪一個優先權就低,偵測的順序就是各中斷源的優先權順序。
假設上圖中輸入連接埠位址為87FFH。有下列查詢程序:
MOV DX, 87FFH
IN AL, DX ;讀取中斷請求暫存器內容
SHR AL, 1
JC IR0 ;IRQ0有請求,轉IR0
SHR AL,1
JC IR1 ;IRQ1有請求,轉IR1
SHR AL,1
JC IR2 ;IRQ2有請求,轉IR2
… …
軟體判優耗時較長。如果中斷來源很多,中斷的即時性就很差,但是軟體判優優先權安排彈性。
利用專門的硬體電路來決定中斷源的優先權,有兩種常見的方式:菊花鏈判優電路與中斷控制器判優。
#設計想法:每個中斷源都有中斷邏輯電路,所有的中斷邏輯電路形成一條鏈,猶如菊花鏈。排在鏈前端的中斷源優先權最高,越後面的設備優先權越低。
實作過程: CPU收到中斷請求,如果允許中斷,CPU發出中斷回應訊號。中斷回應訊號首先到達菊花鏈的前端,如果中斷源1提出了中斷請求,它就會截獲中斷回應訊號,封鎖它,使它不能向下一個中斷源傳送。不論下面的中斷源有沒有提出中斷請求,都不可能接收到中斷回應訊號,因此它們的中斷請求也不能被回應。
中斷控制器,如Intel8259A,可以多種方式設定中斷來源的中斷優先權。中斷控制器中有一個中斷優先權判別器,它會自動判別出目前提出中斷請求的優先權最高的中斷源,並將它的中斷向量碼送到資料匯流排,CPU接收中斷向量碼並據此找到它的中斷服務程序。
經過中斷判優,中斷處理就進入中斷回應階段。中斷回應時,CPU向中斷源發出中斷回應訊號,同時:
① 保護硬體現場;
② 關中斷;
③ 保護斷點;
④ 取得中斷服務程序的入口位址。
中斷服務程序的一般結構為:
1)保護現場。 在中斷服務程序的起始部分安排若干條入堆疊指令,將各暫存器的內容壓入堆疊保存。
2)開中斷。 在中斷服務程序執行期間允許更高層級的中斷請求中斷現 行的中斷服務程序,以實現中斷巢狀。
3)中斷服務。 完成中斷來源的具體要求。
4)恢復現場。 中斷服務程序結束前,必須恢復主程式的中斷現場。通常是將保存在堆疊中的現場資訊彈出到原來的寄存器中。
5)中斷返回。 返回原始程式的斷點處,繼續執行原始程式。
回到原始程式的斷點處,恢復硬體現場,繼續執行原始程式。
中斷回傳操作是中斷回應操作的逆過程。
更多程式相關知識,請造訪:程式設計影片! !
以上是中斷處理過程的五個階段是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!