中斷和異常

2021-09-27 01:31:02 字數 1971 閱讀 2112

中斷通常定義為乙個事件,該事件改變處理器執行的指令順序。中斷通常分為同步中斷與非同步中斷。

異常是同步的,i/o中斷是非同步的。

中斷可以分為:

i/o裝置發出的中斷請求(irq)都可以被遮蔽,乙個中斷被遮蔽以後,控制單元就忽略他。

只有硬體故障等幾個危急事件才是非遮蔽中斷。

異常可以分為:

可以糾正的異常,例如缺頁異常等。eip儲存的是引起故障的指令位址,故障修復以後,該指令還會被執行一次。

例如斷點。eip中儲存的乙個隨後要執行的指令位址,異常指令不會被重複執行

發生嚴重錯誤,不能再eip中儲存確切的異常指令的位置,強制終止受影響的程序。

當乙個cpu接收到乙個中斷時,如何知道是哪個硬體的中斷?

根據該中斷的中斷向量號在中斷描述表中檢索對應的描述符,根據中斷描述符中的段選擇符以及段偏移量找到中斷處理程式的起始位址,然後執行中斷處理程式。

那麼,中斷向量是什麼???中斷描述符表又是什麼???

中斷向量的確定:

每個能發出中斷請求的硬體裝置控制器都有一條名為irq的輸出線,該線與可程式設計中斷控制器(programmable interrupt controuer,pic)的輸入引腳相連。該中斷控制器可以根據產生中斷訊號的不同的irq線轉換成對應的中斷向量,然後cpu通過資料匯流排讀取此向量。

中斷向量由256個,分布如下所示(節選自《深入理解linux核心》)

如上表所示,物理irq可以分配給32~238範圍內的任何向量,128被用來實現系統呼叫。ibm pc相容的體系結構要求一些裝置必須被靜態的連線到指定的irq線,尤其是:

下表顯示了裝置和irq之間一種相當隨意的安排。

異常的中斷向量分布如下:

中斷描述符表(interrupt descriptor table,idt)是乙個系統表,它與中斷異常向量相聯絡,每乙個中斷向量在表中有相應的中斷或異常處理程式的入口位址。核心在允許中斷發生前,必須適當的初始化idt。

idt包含三種型別的描述符,如下表所示:

描述符是:

任務門(task gate)

當中斷訊號發生時,必須取代當前程序的那個程序的tss選擇符存放在任務門中

中斷門(interrupt gate)

包含段選擇符和中斷或異常處理程式的段內偏移量。當控制權傳遞到乙個適合的段時,清if標誌,關中斷。

陷進門(trap gate)

與中斷門相似,只不過傳遞控制權以後,不清if標誌。

3中簡要介紹了中斷異常處理的流程,並在3,4中簡介了中斷向量與中斷描述符表,現在詳細介紹下中斷異常的處理流程。

當cpu執行了一條指令後,cs和eip這對暫存器包含下一條將要執行的指令的邏輯位址。在處理這條指令之前,控制單元會檢查在執行前一條指令時是否已經發生了乙個中斷或異常(控制單元是輪詢是否有中斷發生)。如果發生了乙個中斷或異常:

中斷異常處理完以後,相應的處理程式必須產生一條iret指令,把控制權轉交給被中斷的程序。

6.中斷優先順序

pic模式irq數目越低意味著優先順序越高。在apic模式下,ioapic連線的24個irq是平權的,決定優先順序的是對應的中斷向量的大小,中斷向量有256,中斷優先順序的計算公式:

優先順序=vector num/16

即每16個中斷或異常一組,共享乙個優先順序,共16個。32以下的中斷向量被異常和保留佔據,因此2到15是中斷的優先順序。

中斷和異常

中斷和異常 中斷訊號的處理方式 分緊急部分和不緊急部分 中斷處理 必須能夠重入,以便能夠中斷巢狀 中斷和異常的產生 乙個irq interrupt request 代表中斷控制器上的一根中斷線,和乙個中斷向量 單cpu 可程式設計中斷控制器 pic 多cpu 改進的可程式設計中斷控制器 apic 乙...

中斷和異常

1 中斷機制的誕生 早期計算機,各程式只能序列執行,系統資源利用率低,為了解決這個問題,從而誕生了作業系統 作為計算機的管理者 引入中斷機制,實現了多道程式併發執行。本質 發生中斷就意味著需要作業系統介入,開展管理工作。2 中斷的概念和作用 1 當中斷發生時,cpu立即進入核心態。2 當中斷發生後,...

中斷和異常

這周主要學習了中斷和異常,在這裡把整章知識梳理一下,做乙個總結。工作佇列沒有完成 一 什麼是中段 中斷 外部中段 是對外部裝置而言,i o需要服務時處理器去相應。異常 內部中斷 是為了解決機器執行時所出現的某些隨機事件及程式設計方便而出現的。中斷可分為遮蔽中斷和不可遮蔽中斷 異常分為故障 陷阱和終止...