資源描述:
《內部中斷、外部中斷、硬件中斷和軟件中斷分析》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、軟件中斷、硬件中斷、外部中斷、內部中斷??2010-01-3016:35:05
2、??分類:?電子愛好者
3、字號?訂閱8086/8088把中斷分為內部中斷和外部中斷兩大類。為了支持多任務和虛擬存儲器等功能,80386把外部中斷稱為“中斷”,把內部中斷稱為“異?!?。與8086/8088一樣,80386通常在兩條指令之間響應中斷或異常。80386最多處理256種中斷或異常。??????1.中斷????????????對80386而言,中斷是由異步的外部事件引起的。外部事件及中斷響應與正執(zhí)行的指令沒有關系。通常,中斷用于指示I/O設備的一次操作已完成。與8
4、086/8088一樣,80386有兩根引腳INTR和NMI接受外部中斷請求信號。INTR接受可屏蔽中斷請求。NMI接受不可屏蔽中斷請求。在80386中,標志寄存器EFLAGS中的IF標志決定是否屏蔽可屏蔽中斷請求。??????????????外部硬件在通過INTR發(fā)出中斷請求信號的同時,還要向處理器給出一個8位的中斷向量。處理器在響應可屏蔽中斷請求時,讀取這個由外部硬件給出的中斷向量號。處理器對這個中斷向量號并沒有規(guī)定。但在具體的微機系統(tǒng)中,系統(tǒng)必須通過軟件和硬件的配合設置,使得給出的這個中斷向量號不僅與外部中斷源對應,而且要避免中斷向量號使用沖
5、突情況的出現(xiàn)??删幊讨袛嗫刂破餍酒?259A可配合80386工作,能夠根據(jù)設置向處理器提供上述中斷向量號,還能處理中斷請求的優(yōu)先級。每個8259A芯片可以支持8路中斷請求信號,如果使用9個8259A芯片(一個主片,8個從片),就可使80386在單個引腳INTR上接受多達64個中斷源的中斷請求信號。??????????????處理器不屏蔽來自NMI的中斷請求。處理器在響應NMI中斷時,不從外部硬件接收中斷向量號。與8086/8088一樣,在80386中,不可屏蔽中斷所對應的中斷向量號固定為2。為了不可屏蔽中斷的嵌套,每當接受一個NMI中斷,處理器就
6、在內部屏蔽了再次響應NMI,這一屏蔽過程直到執(zhí)行中斷返回指令IRET后才結束。所以,NMI處理程序應以IRET指令結束。??????2.異常????????????異常是80386在執(zhí)行指令期間檢測到不正常的或非法的條件所引起的。異常與正執(zhí)行的指令有直接的聯(lián)系。例如,執(zhí)行除法指令時,除數(shù)等于0。再如,執(zhí)行指令時發(fā)現(xiàn)特權級不正確。當發(fā)生這些情況時,指令就不能成功完成。軟中斷指令“INT??n”和“INTO”也歸類于異常而不稱為中斷,這是因為執(zhí)行這些指令產生異常事件。??????????????80386識別多種不同類別的異常,并賦予每一種類別以不同
7、的中斷向量號。異常發(fā)生后,處理器就象響應中斷那樣處理異常。即根據(jù)中斷向量號,轉相應的中斷處理程序。把這種中斷處理程序稱為異常處理程序可能更合適。??????????????根據(jù)引起異常的程序是否可被恢復和恢復點不同,把異常進一步分類為故障(Fault)、陷阱(Trap)和中止(Abort)。我們把對應的異常處理程序分別稱為故障處理程序、陷阱處理程序和中止處理程序。??????????????故障是在引起異常的指令之前,把異常情況通知給系統(tǒng)的一種異常。80386認為故障是可排除的。當控制轉移到故障處理程序時,所保存的斷點CS及EIP的值指向引起故障
8、的指令。這樣,在故障處理程序把故障排除后,執(zhí)行IRET返回到引起故障的程序繼續(xù)執(zhí)行時,剛才引起故障的指令可重新得到執(zhí)行。這種重新執(zhí)行,不需要操作系統(tǒng)軟件的額外參與。故障的發(fā)現(xiàn)可能在指令開始執(zhí)行之前,也可能在指令執(zhí)行期間。如果在指令執(zhí)行期間檢測到故障,那么中止故障指令,并把指令的操作數(shù)恢復為指令開始執(zhí)行之前的值。這可保證故障指令的重新執(zhí)行得到正確的結果。例如,在一條指令的執(zhí)行期間,如果發(fā)現(xiàn)段不存在,那么停止該指令的執(zhí)行,并通知系統(tǒng)產生段故障,對應的段故障處理程序可通過加載該段的方法來排除故障,之后,原指令就可成功執(zhí)行,至少不再發(fā)生段不存在的故障。?
9、?????????????陷阱是在引起異常的指令之后,把異常情況通知給系統(tǒng)的一種異常。當控制轉移到異常處理程序時,所保存的斷點CS及EIP的值指向引起陷阱的指令的下一條要執(zhí)行的指令。下一條要執(zhí)行的指令,不一定就是下一條指令。因此,陷阱處理程序并不是總能根據(jù)保存的斷點,反推確定出產生異常的指令。在轉入陷阱處理程序時,引起陷阱的指令應正常完成,它有可能改變了寄存器或存儲單元。軟中斷指令、單步異常是陷阱的例子。??????????????中止是在系統(tǒng)出現(xiàn)嚴重情況時,通知系統(tǒng)的一種異常。引起中止的指令是無法確定的。產生中止時,正執(zhí)行的程序不能被恢復執(zhí)行。
10、系統(tǒng)接收中止后,處理程序要重新建立各種系統(tǒng)表格,并可能重新啟動操作系統(tǒng)。硬件故障和系統(tǒng)表中出現(xiàn)非法值或不一致的值是中止的例子。???軟硬