Intel x86共有256種異?;蛘咧袛?,也就是常說的中斷向量,分別有對應的中斷類型碼,分布如下
0-31 | 異常和非屏蔽中斷 |
32-47 | 由I/O設備引起的屏蔽中斷,書中所講為8259A單片機來處理響應34號中斷外的其他中斷 |
48-255 | 標識軟中斷,linux系統只使用了128號即0x80來實現系統內調用,在用戶態下執行int 0x80匯編,cpu切換到內核態,執行system_call()函數 |
對于cpu跑指令的過程中遇到的突發情況分為兩大類
CPU內部
cpu內部出現的問題,必須馬上處理,所以叫異常;
CPU外部
cpu外部出現問題,可以不馬上處理,所以采用可屏蔽和不可屏蔽中斷的方式來區分。
為了管理方便,異常和不可屏蔽中斷都當作異常來處理,這類問題有專門的異常處理程序,是linux要解決的問題。
0-17號是intel定義異常,除了3,4,5(以及后面的128)號是陷進外(留給系統調用),其他的都是故障,cpu跑不下去了,所以需要處理
18-31號為將來的cpu保留
32-47由8259A響應,對應下面的IRQ0-IRQ15,34號中斷也就是IRQ2不知道做什么
還有個128號軟中斷系統調用
新聞熱點
疑難解答