linux中斷處理的流程 請(qǐng)畫圖說明中斷向量,中斷向量表,中斷向量號(hào),中斷服務(wù)程序入口地址,中斷向量地址在儲(chǔ)存空間中的關(guān)系?
請(qǐng)畫圖說明中斷向量,中斷向量表,中斷向量號(hào),中斷服務(wù)程序入口地址,中斷向量地址在儲(chǔ)存空間中的關(guān)系?矢量中斷:當(dāng)CPU讀取0x18處的IRQ中斷指令時(shí),系統(tǒng)自動(dòng)讀取與中斷源的確定地址相對(duì)應(yīng)的指令,以替換
請(qǐng)畫圖說明中斷向量,中斷向量表,中斷向量號(hào),中斷服務(wù)程序入口地址,中斷向量地址在儲(chǔ)存空間中的關(guān)系?
矢量中斷:當(dāng)CPU讀取0x18處的IRQ中斷指令時(shí),系統(tǒng)自動(dòng)讀取與中斷源的確定地址相對(duì)應(yīng)的指令,以替換0x18處的指令。在中斷響應(yīng)過程中,CPU通過從接口電路獲得的中斷類型號(hào)(中斷向量號(hào))計(jì)算相應(yīng)中斷向量在表中的位置,并從中斷向量表中獲得中斷向量,它將程序流轉(zhuǎn)換為中斷服務(wù)程序的入口地址。在PC/at中,規(guī)定至少1kb的內(nèi)存用于存儲(chǔ)256個(gè)中斷向量。這個(gè)內(nèi)存區(qū)域是中斷向量表。擴(kuò)展數(shù)據(jù)80x86系統(tǒng)收集所有中斷向量,并按中斷類型從小到大的順序?qū)⑺鼈兇鎯?chǔ)在存儲(chǔ)器的某個(gè)區(qū)域中。存儲(chǔ)中斷向量的存儲(chǔ)區(qū)域稱為中斷向量表,即中斷服務(wù)程序的入口地址表。由于中斷向量表可以在操作系統(tǒng)級(jí)靈活修改,因此不同系統(tǒng)的中斷向量表可能不同。此外,在CPU保護(hù)模式下,Intel占用從0x00到0x1f的32個(gè)中斷號(hào)。在Linux中,它用于系統(tǒng)自身從0x20中斷,包括8259芯片的中斷復(fù)位。
中斷向量表是存放在什么的存儲(chǔ)區(qū)域?
首先,我們必須了解BIOS中斷和操作系統(tǒng)中斷。BIOS中斷存儲(chǔ)在主板上的ROM中,當(dāng)系統(tǒng)啟動(dòng)時(shí),它將自動(dòng)放入內(nèi)存0位。我們還通過這些中斷做了進(jìn)一步的工作。操作系統(tǒng)的中斷是由編寫內(nèi)核的人編寫的,它存儲(chǔ)內(nèi)存的位是由編寫內(nèi)核的人決定的。Linux操作系統(tǒng)的中斷向量表覆蓋了BIOS中斷表,而DOS系統(tǒng)沒有。因此,在windows下編譯程序集時(shí),我們可以使用這兩種中斷,但在Linux下只能使用系統(tǒng)中斷。
中斷向量表的功能?
中斷向量表的功能是在中斷源發(fā)出中斷請(qǐng)求時(shí)查找表,找出其中斷向量,然后傳輸?shù)较鄳?yīng)的中斷服務(wù)子程序。