中斷相關知識點

2021-10-04 04:24:36 字數 3186 閱讀 8372

第乙個概念是把同步和非同步中斷分別稱為異常(exception)和中斷(interrupt);

第二個概念是進一步的,對於中斷和異常,intel又再細分了很多類,將中斷分為可遮蔽中斷和不可遮蔽中斷;將異常分為故障、陷阱、異常中止和程式設計異常。

中斷:又稱為非同步中斷,是其他硬體依照cpu時鐘訊號隨機產生的。中斷又被分為可遮蔽硬體中斷和不可遮蔽中斷。在微機原理課程中,處理器中有兩個引腳nmi和intr負責接受中斷訊號,還有高階可程式設計中斷控制器(apic),如8259a管理中斷訊號。則可遮蔽硬體中斷:任何通過intr或著區域性apic傳遞到處理器的中斷訊號都被稱為可遮蔽硬體中斷,由io裝置產生的irq(interrupt request)也是可遮蔽硬體中斷。但是通過intr引腳傳遞的可遮蔽硬體中斷可使用intel架構定義的中斷向量(0-255),而區域性的apic傳遞的部分只能使用16-255號向量。若中斷訊號從nmi引腳傳遞過來,則發生的是乙個不可遮蔽中斷。

異常:又稱為同步中斷,是當指令執行時cpu控制單元產生的,之所以稱為同步,是因為只有在一條指令終止執行後cpu才會發出中斷。在不失程序執行連續性的同時,按引起的異常的指令是否能重新執行,且依據它們被報告的方式,異常分為錯誤,陷阱,和終止三種情況。

錯誤:錯誤是一種通常可以能夠被修正的異常,一旦修正,程式能夠不失去連續性地接著執行。當報告錯誤發生時,處理器將機器狀態恢復到執行錯誤之前的狀態。錯誤處理例程的返回位址指向產生錯誤的指令,而不是錯誤指令之後的的那條指令。如頁錯誤。

陷阱:當引起陷阱的指令發生時,馬上產生該異常。陷阱允許程式不失去連續性的繼續執行。陷阱處理例程的返回位址指向引起陷阱的指令的下一條指令(與錯誤本質上的區別)。如溢位。

終止:它並不總是報告產生異常的指令的確定位置,也不允許引起終止的程序或任務重新執行。如匯流排錯誤導致異常終止。

從不同的角度來說,中斷可以有三種分類方法。

中斷可以分為同步中斷(synchronous)和非同步中斷(asynchronous)。

中斷可分為硬中斷和軟中斷。

中斷可分為可遮蔽中斷(maskable interrupt)和非遮蔽中斷(nomaskable interrupt)。

• 硬中斷

○ 硬中斷由硬體產生。每個裝置或者裝置集都有自己的irq(中斷請求)。

中斷類別及其行為

類別 原因 非同步/同步 返回行為

中斷 來自i/o裝置的訊號 非同步 總是返回到下一條指令

陷阱 有意的異常 同步 總是返回到下一條指令

故障 潛在可恢復的錯誤 同步 返回到當前指令

終止 不可恢復的錯誤 同步 不會返回

乙個無符號整數

intel x86共支援256中向量中斷,intel給每種中斷源編號,從0-255,並把這個無符號整數叫做乙個中斷向量。不可遮蔽中斷的向量和異常的向量是固定的,而可遮蔽的硬體中斷可以通過對中斷控制器程式設計來改變。

linux中的中斷向量:

0-19的中斷向量對應於異常和非遮蔽中斷。

20-31intel保留

32-127可遮蔽硬體中斷

128用於系統呼叫的可程式設計異常

129-238可遮蔽硬體中斷

239本地apic時鐘中斷

240本地apic高溫中斷

241-250由linux留作將來使用

251-253處理器間中斷

254本地apic錯誤中斷

255本地apic偽中斷(cpu遮蔽某個中斷時產生的)

中斷向量錶即中斷描述符表(叫法不同):中斷描述符表(interrupt descriptor table,idt)是乙個系統表,它與每乙個中斷或異常向量相關,每乙個向量在表中有相應的中斷或異常處理程式的入口位址。核心在允許中斷發生前,必須適當地初始化idt,用lidt彙編指令初始化idtr。

當系統發生中斷時,晶元的程式會自動跳轉到乙個特定的位置,一般是程式開始處,去執行那裡的**。不同的中斷,晶元會自動計算在中斷向量表中的偏移量。而那裡的**其實是乙個跳轉位址,會跳轉到中斷處理函式的位置進行中斷處理。中斷向量表,其實是一連串的跳轉位址。向量也有指引跳轉的意思。

中斷與計算機病毒 計算機作業系統是開放的,使用者可以修改擴充作業系統,在計算機上實現新的功能。

修改作業系統的主要方式之一是擴充中斷功能。計算機提供很多中斷,合理合法地修改中斷會給計算機增加非常有用的新功能。如 int 10h是螢幕顯示中斷,原只能顯示西文,而在各種漢字系統中都可以通過修改int 10h使計算機能夠顯示中文。另一方面,計算機病毒則篡改中斷為其達到傳染、激發等目 的服務,與病毒有關的重要中斷有: int 08h和int 1ch定時中斷,每秒呼叫18.2次,有些病毒利用它們的記時判斷 激發條件。 int 09h鍵盤輸入中斷,病毒用於監視使用者擊鍵情況。 int 10h螢幕輸入輸出中斷,一些病毒用於在螢幕上顯示字元圖形表現自己。 int 13h磁碟輸入輸出中斷,引導型病毒用於傳染病毒和格式化磁碟。 int 21h dos功能呼叫,包含了dos的大部分功能,已發現的絕大多數檔案型病毒 修改int 21h中斷,因此也成為防病毒的重點監視部位。 int 24h dos的嚴重錯誤處理中斷,檔案型病毒常進行修改,以防止傳染寫保護磁 盤時被發現。

中斷子程式的入口位址存放在計算機記憶體的最低端,病毒竊取和修改中斷的人口地 址獲得中斷的控制權,在中斷服務過程中插入病毒的「私貨」。

總之,中斷可以被使用者程式所修改,從而使得中斷服務程式被使用者指定的程式所替代。這樣雖然大大地方便了使用者,但也給計算機病毒製造者以可乘之機。病毒正是通過修 改中斷以使該中斷指向病毒自身來進行發作和傳染的。

中斷處理一般分為兩個部分,中斷處理程式是上半部:接收到乙個中斷就立即執行,但只做有嚴格時限的工作,這些工作都是在所有中斷被禁止的情況下完成的。能夠被允許稍後完成的工作被推遲到下半部去。通常情況下,下半部會在中斷處理程式返回時立即執行。

更深層次的中斷處理過程就要深入至驅動,硬體電路了。由於驅動涉及的利益,旁人是看不到**與設計架構的,只能分析,因此就不做討論

軟中斷一直重新觸發怎麼辦?

核心不會立即處理重新觸發的軟中斷,當大量軟中斷出現的時候,核心會喚醒一組核心執行緒來處理。

這些執行緒的優先順序最低(nice值為19),這能避免它們跟其它重要的任務搶奪資源。

但它們最終肯定會被執行,所以這個折中的方案能夠保證在軟中斷很多時使用者程式不會因為得不到處理時間而處於飢餓狀態,同時也保證過量的軟中斷最終會得到處理。

每個處理器都有乙個這樣的執行緒,名字為ksoftirqd/n,n為處理器的編號。

相關知識點

nweb inf uclasses uweb.xml ulib n 從httpservlet 繼承,重寫doget dopost方法 n部署web.xml n 只有乙個物件 n 第一次請求的時候被初始化,只一遍 n 初始化後先呼叫init 方法,只一遍 n 每個請求,呼叫一遍service serv...

Camera相關知識點

1 camera涉及到的概念 1.1 preview capture video preview 預覽 capture 拍照 video 錄影 1.2 幀率 快門 幀率 frame rate 用於測量顯示幀數的量度。所謂的顯示單位為每秒顯示的幀數,簡稱fps或hz 快門 shutter。快門是攝像器...

CURL相關知識點

1,建立乙個curl的會話資源 ch curl init 設定url,引數傳遞出來的時候 curl setopt ch,curlopt url,url 使用post提交的資料 curl setopt ch,curlopt post,1 if post data 設定是否將響應結果存入變數,1或者tr...