① 為什麼在主程序和中斷服務程序中都要安排開中斷指令
是CPU進入中斷周期後自動關中斷,為了讓主程序和中斷服務程序能夠處理中斷與中斷嵌套都要安排開中斷指令。
中斷系統正在執行一個中斷服務時,有另一個優先順序更高的中斷提出中斷請求,這時會暫時終止當前正在執行的級別較低的中斷源的服務程序,去處理級別更高的中斷源,待處理完畢,再返回到被中斷了的中斷服務程序繼續執行。
CPU進入中斷周期後,由中斷隱指令自動將使能全局中斷標志位置零,即關中斷,這就意味著CPU在執行中斷服務程序中禁止響應新的中斷請求。CPU若想再次響應中斷請求,必須開中斷,這一任務通常由中斷服務程序中的開中斷指令實現。
(1)為什麼中斷處理程序擴展閱讀:
中斷源屏蔽處理的相關技術:
當中斷源被屏蔽(屏蔽觸發器mask=1),此時即使完成觸發器D=1,中斷查詢信號到來時刻只能將中斷請求觸發器INTR置「0」,CPU接收不到該中斷源的中斷請求,即它被屏蔽。
若該中斷源未被屏蔽(mask=0),當設備工作已完成時(D=1),中斷查詢信號則將INTR置「1」,表示該中斷源向CPU發出中斷請求,該信號送至排隊器進行優先順序判斷。
為了保證級別低的中斷源不幹擾比其級別高的中斷源的中斷處理過程。可採用屏蔽技術。
② 為什麼現代計算機系統中還有中斷處理程序是用匯編語言編寫
主要是出於效率方面的考量。中斷處理程序需要在盡量短的時間內完成所需的必要處理,盡量減少對線程/程序流造成的影響,因此大部分情況下用匯編直接編寫,跳過了通用編譯過程中冗餘的適配部分。
匯編語言是
匯編指令
集、
偽指令
集和使用它們
規則
的統稱,使用具有一定
含義
的
符號
為助記符。由於匯編語言是完全依賴於硬體的,因此通過適當的
匯編程序
設計,能夠充分發揮出硬體的潛力,產生高效率的運行
代碼
。
不光是中斷處理程序,有許多軟體系統的
內核
(例如
操作系統內核
)都是用匯編語言編寫的。
③ 什麼是中斷處理程序
當CPU(中央處理器)執行一條現行指令的時候,如果外設向CPU發出中斷請求,那麼CPU在滿足響應的情況下,將發出中斷響應信號,與此同時關閉中斷,表示CPU不在受理另外一個設備的中斷。這時,CPU將尋找中斷請求源是哪一個設備,並保存CPU自己的程序計數器(PC)的內容。然後,他將轉移到處理該中斷源的中斷服務程序。CPU在保存現場信息,設備服務(如交換數據)以後,將恢復現場信息。在這些動作完成以後,開放中斷,並返回到原來被中斷的主程序的下一條指令。
在微機系統中,對於外部中斷,中斷請求信號是由外部設備產生,並施加到CPU的NMI或INTR引腳上,CPU通過不斷地檢測NMI和INTR引腳信號來識 別是否有中斷請求發生。對於內部中斷,中斷請求方式不需要外部施加信號激發,而是通過內部中斷控制邏輯去調用。無論是外部中斷還是內部中斷,中斷處理過程 都要經歷以下步驟:請求中斷→響應中斷→關閉中斷→保留斷點→中斷源識別→保護現場→中斷服務子程序→恢復現場→中斷返回。
④ 什麼是中斷簡述中斷處理過程
中斷就是執行中斷服務程序,這是中斷系統的核心。不同計算機系統的中斷處理過程各具特色,但對多數計算機而言,其中中斷服務程序的流程如下。 中斷處理過程基本上由3部分組成,第一部分為准備部分,其基本功能是保護現場,對於非向量中斷方式則需要確定中斷源,最後開放中斷,允許更高級的中斷請求打斷低級的中斷服務程序;第二部分為處理部分,即真正執行具體的為某個中斷源服務的中斷服務程序;第三部分為結尾部分,首先要關中斷,以防止在恢復現場過程中被新的中斷請求打斷,接著恢復現場,然後開放中斷,以便返回原來的程序後可響應其他的中斷請求。中斷服務程序的最後一條指令一定是中斷返回指令。
一個完整的中斷過程包括:
中斷請求:是指中斷源(引起中斷的事件或設備)向CPU
發出的請求中斷的要求。
中斷判優:當有多個中斷源發出請求時,需要通過適當的辦法決定先處理哪個中斷請求;
中斷響應:指CPU中止現行程序轉至中斷服務程序的過程;
中斷處理:就是指CPU執行中斷服務程序;
中斷返回: 執行完中斷服務程序後,返回到被中斷的程序
中斷的作用:
(1)CPU與I/O設備並行工作
(2)硬體故障處理
(3)實現人機聯系:在計算機工作過程中,如果用戶要干預機器,如查看計算的中間結果,了解機器的工作狀態,給機器下達臨時性的命令等。在沒有中斷系統的計算機里這些功能幾乎是無法實現的。
(4)實現多道程序和分時操作
(5)實現實時處理
(6)實現應用程序和操作系統的聯系
(7)多處理機系統各處理機間的聯系
⑤ 什麼是中斷處理程序編寫中斷處理程序時要注意哪些問題
發生中斷時CPU在中斷允許的情況下,強制跳轉至中斷處理程序對該中斷進行響應。
中斷處理程序需要注意:
若是改寫系統中斷,盡量保存系統中斷的原地址;
如果是自定義中斷,需要注意是否允許多重中斷,即能否被另一個中斷(包括同一個中斷號的相同中斷)打斷,若不希望被打斷,應當在中斷處理程序開始時關閉中斷允許位IF(用CLI指令),並且在程序結束時開啟中斷位(用STI指令)。
另外,中斷處理程序本身也是一個過程,也有可能出錯,所以盡量不要在中斷處理程序中產生錯誤,以免程序不可控。