完整的中斷處理過程分為那幾個階段?

  • 作者:由 匿名使用者 發表于 繪畫
  • 2021-09-20

完整的中斷處理過程分為那幾個階段? 匿名使用者 1級 2013-07-08 回答

1)中斷響應的事前準備:

系統要想能夠應對各種不同的中斷訊號,總的來看就是需要知道每種訊號應該由哪個中斷服務程式負責以及這些中斷服務程式具體是如何工作的。系統只有事前對這兩件事都知道得很清楚,才能正確地響應各種中斷訊號和異常。

2) CPU檢查是否有中斷/異常訊號

CPU在執行完當前程式的每一條指令後,都會去確認在執行剛才的指令過程中中斷控制器(如:8259A)是否傳送中斷請求過來,如果有那麼CPU就會在相應的時鐘脈衝到來時從總線上讀取中斷請求對應的中斷向量。

對於異常和系統呼叫那樣的軟中斷,因為中斷向量是直接給出的,所以和透過IRQ(中斷請求)線傳送的硬體中斷請求不同,不會再專門去取其對應的中斷向量。

3) 根據中斷向量到IDT表中取得處理這個向量的中斷程式的段選擇符

CPU根據得到的中斷向量到IDT表裡找到該向量對應的中斷描述符,中斷描述符裡儲存著中斷服務程式的段選擇符。

4) 根據取得的段選擇符到GDT中找相應的段描述符

CPU使用IDT查到的中斷服務程式的段選擇符從GDT中取得相應的段描述符,段描述符裡儲存了中斷服務程式的段基址和屬性資訊,此時CPU就得到了中斷服務程式的起始地址。

5) CPU根據特權級的判斷設定即將執行的中斷服務程式要使用的棧的地址

CPU會根據CPL和中斷服務程式段描述符的DPL資訊確認是否發生了特權級的轉換,比如當前程式正執行在使用者態,而中斷程式是執行在核心態的,則意味著發生了特權級的轉換,這時CPU會從當前程式的TSS資訊(該資訊在記憶體中的首地址存在TR暫存器中)裡取得該程式的核心棧地址。

6) 保護當前程式的現場

CPU開始利用棧保護被暫停執行的程式的現場:依次壓入當前程式使用的eflags,cs,eip,errorCode(如果是有錯誤碼的異常)資訊。

7) 跳轉到中斷服務程式的第一條指令開始執行

CPU利用中斷服務程式的段描述符將其第一條指令的地址載入到cs和eip暫存器中,開始執行中斷服務程式。這意味著先前的程式被暫停執行,中斷服務程式正式開始工作。

8) 中斷服務程式處理完畢,恢復執行先前中斷的程式

在每個中斷服務程式的最後,必須有中斷完成返回先前程式的指令,這就是iret(或iretd)。程式執行這條返回指令時,會從棧裡彈出先前儲存的被暫停程式的現場資訊,即eflags,cs,eip重新開始執行。

搜狗問問

擴充套件資料

硬體中斷導致處理器透過一個上下文切換(context switch)來儲存執行狀態(以程式計數器和程式狀態字等暫存器資訊為主);軟體中斷則通常作為CPU指令集中的一個指令,以可程式設計的方式直接指示這種上下文切換,並將處理導向一段中斷處理程式碼。

中斷在計算機多工處理,尤其是實時系統中尤為有用。這樣的系統,包括運行於其上的作業系統,也被稱為“中斷驅動的”(interrupt-driven)。

中斷使CPU中止正在執行的程式而轉去處理特殊事件的操作,這些引起中斷的事件稱為中斷源,它們可能是來自外設的輸入輸出請求,也可能是計算機的一些異常事故或其它內部原因。

在執行一個程式的過程中,斷續地以“插入”方式執行一些完成特定處理功能的程式段,這種處理方式稱為中斷。

參考資料來源:百度百科-中斷處理

完整的中斷處理過程分為那幾個階段? 匿名使用者 1級 2013-07-08 回答

一般微控制器原理這本書會講到,分別是中斷請求、中斷判優、中斷響應、中斷處理和中斷返回。

完整的中斷處理過程分為那幾個階段? 情緣一線牽 1級 2013-07-08 回答

中斷響應、中斷處理、中斷返回。

完整的中斷處理過程分為那幾個階段? 匿名使用者 1級 2013-07-09 回答

中斷取樣、中斷查詢、中斷響應及中斷返 這是91頁微控制器書上的原話

完整的中斷處理過程分為那幾個階段? 情緣一線牽 1級 2013-07-08 回答

中斷響應、中斷處理、中斷返回。

Top