04-30 中斷與異常

1.中斷與異常

在計算機的世界里,不存在一絲溫度.

它只會沿著寫好的代碼,心無旁騖地執(zhí)行下去,這是它的優(yōu)點,也是它的缺點--因為寫代碼的人不可能把所有意外情況都考慮周全.

比如說,你要求計算機走一萬步,那他就只會走一萬步,不管路上是否有車,是否會對自己的安危產(chǎn)生威脅.

鑒于這種情況,人們很聰明地發(fā)明了一種機制---中斷與異常.

中斷與異常,在原理上是一樣的:在計算機運算的時候,如果遇到突發(fā)情況,比如說BUG,硬件損壞.死循環(huán)等.這時計算機會主動跳轉(zhuǎn)到一個專門處理突發(fā)情況的代碼區(qū)域,對不同的突發(fā)情況進行處理.

而這種突發(fā)情況,我們可以分為兩種:

一種是計算機遇到突發(fā)情況,自發(fā)跳轉(zhuǎn).這種情況,我們稱之為"異常".

一種是我們在計算機運行的過程中,通過外部設(shè)備人為地截斷計算機運行,比如說強制關(guān)機,任務(wù)管理器強制關(guān)閉等,這種情況,我們稱之為"中斷".

2. IDT

中斷和異常,雖然截斷方式不同,但它們最終是由操作系統(tǒng)統(tǒng)一管理.

根據(jù)不同的情況,中斷與異常這兩種情況之下,還可以進行進一步的細分.而操作系統(tǒng)負責(zé)為每一種細分的情況都提供一種處理函數(shù).這些處理函數(shù),學(xué)名叫陷阱處理器.

那么,操作系統(tǒng)(或者更深入地講,是CPU)是如何將每一種細分情況,與每一種處理函數(shù),一一對應(yīng)的呢?

這時,我們就采用了一種最原始的方法,寫一個表格,把細分情況與處理函數(shù)一一對應(yīng)的關(guān)系,都寫在上面.

而這個表,就叫做IDT

操作系統(tǒng)在啟動的時候,最早的任務(wù),就是準備好這樣的一張IDT表,以便應(yīng)付接下來可能出現(xiàn)的突發(fā)情況.

我們可以通過兩種方式查詢到這張表:

第一,使用windbg配合VirtualKD配置好雙機調(diào)試環(huán)境,加載完符號,輸入命令!idt /a

(搞這個環(huán)境時,加載符號是個坑,加載的命令是SRV*C:\symbols*

http://msdl.microsoft.com/download/symbols,同時要把reload的勾給打上.不過最后我還是沒能執(zhí)行!idt /a的命令,原因極有可能出在加載符號上.)

第二步,使用PC-Hunter查看IDT

這個方法我還沒嘗試,暫且略過.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容