中斷方式與輪詢方式比較
中斷的基本概念
程序中斷通常簡稱中斷,是指CPU在正常運行程序的過程中,由于預選安排或發生了各種隨機的內部或外部事件,使CPU中斷正在運行的程序,而轉到為相應的服務程序去處理,這個過程稱為程序中斷。
二、80x86微處理器的中斷80x86微處理器的中斷類型一般分為2類,即由于執行某些指令引起的軟中斷和由處理器以外其他控制電路發出中斷請求信號引起的硬中斷。CPU要從主程序轉入中斷服務程序,必須知道該中斷服務程序的入口地址,即中斷向量。80x86為CPU的PC機共有256個中斷向量。
中斷的一般過程:
主程序只是在設備A,B,C數據準備就緒時,才去處理A,B,C,進行數據交換。在速度較慢的外圍設備準備自己的數據時,CPU照常執行自己的主程序。在這個意義上說,CPU和外圍設備的一些操作是并行地進行的,因而同串行進行的程序查詢方式相比,計算機系統的效率是大大提高了。如下圖:
實際的中斷過程還要復雜一些,下圖示出了中斷處理過程的詳細流程圖.當CPU執行完—條現行指令時,如果外設向CPU發出中斷請求、那么CPU在滿足響應條件的情況下,將發出中斷響應信號,與此同時關閉中斷(“中斷屏蔽”觸發器置“1”),表示CPU不再受理另外—個設備的中斷。這時、CPU將尋找中斷請求源是哪個設備。并保存CPU自己的程序計數器(Pc)的內容.然后,它將轉移到處理該中斷源的中斷服務程序.CPU在保存現場信息,設備(如文換數據)以后.將恢復現場信息.在這些動作完成以后,開放中斷(“中斷屏蔽”觸發器置‘o”),并返網到原來被中斷的主程序的下一條指令。
(1)盡管外界中斷請求是隨機的,但CPU只有在當前一條指令執行完畢后,即轉入公操作時才受理設備的中斷請求,這樣才不致于使當前指令的執行受到干擾。公操作是指一條指令執行結束后CPU所進行的操作,如中斷處理、直接內存傳送、取下條指令等。外界中斷請求信號通常存放在接口中的中斷源鎖存器里,并通過中斷請求線連至CPU,每當一條指令執行到末尾,CPU便檢查中斷請求信號。若中斷請求信號為“1”,則CPU轉入“中斷周期”,受理外界中斷。(2)為了在中斷服務程序執行完畢以后正確地返回到原來主程序被中斷的斷點(PC內容)而繼續執行主程序,必須把程序計數器PC的內容,以及當前指令執行結束后CPU的狀態(包括寄存器的內容和一些狀態標志位)都保存到堆棧中去。這些操作叫做保存現場。(3)當CPU響應中斷后,正要去執行中斷服務程序時,可能有另一個新的中斷源向它發出中斷請求。為了不致造成混亂,在CPU的中斷管理部件中必須有一個中斷屏蔽觸發器,它可以在程序的控制下置“1”(設置屏蔽),或置“0”(取掉屏蔽)。只有在中斷屏蔽標志為“0”時,CPU才可以受理中斷。當一條指令執行完畢CPU接受中斷請求并作出響應時,它一方面發出中斷響應信號INTA,另一方面把中斷屏蔽標志置“1”,即關閉中斷。這樣,CPU不能再受理另外的新的中斷源發來的中斷請求。只有在CPU把中斷服務程序執行完畢以后,它才重新使中斷屏蔽標志置“0”,即開放中斷,并返回主程序。因此,中斷服務程序的最后必須有兩條指令,即開中斷指令和返主指令,同時在硬件上要保證返主指令執行以后才受理新的中斷請求。(4)中斷處理過程是由硬件和軟件結合來完成的。如在前圖中,中斷周期由硬件實現,而中斷服務程序由機器指令序列實現。后者除執行保存現場、恢復現場、開放中斷并返回主程序任務外,對要求中斷的設備進行服務,使其同CPU交換一個字的數據,或作其他服務。
輪詢方式的基本概念
輪詢(Polling)I/O方式或程序控制I/O方式,是讓CPU以一定的周期按次序查詢每一個外設,看它是否有數據輸入或輸出的要求,若有,則進行相應的輸入/輸出服務;若無,或I/O處理完畢柏,CPU就接著查詢下一個外設。
所需硬件:外設接口提供狀態端口、數據端口
軟件機制:應用程序必須定時查詢各個接口的狀態端口,判斷是否需要輸入、輸出數據,如果需要,則通過數據端口進行數據操作。
特點:CPU通過執行指令主動對外部設備進行查詢,外部設備處于被動地位。
上圖為一般過程。
輪詢方式與中斷方式的比較
速度
程序控制方式:
硬件的速度指標:由于“程序控制方式”完全采用軟件的方式對外設接口進行控制,所以它的硬件操作只是普通的端口讀寫,并無特別之處,其速度指標由總線傳輸速度、端口的響應速度共同決定。
對于這種外設控制方式,速度指標關鍵在于軟件。
中斷處理方式:
中斷處理方式本身所作的原子操作解釋和程序控制方式是一致的。
只不過因為加入了中斷請求和響應機制,對狀態端口的讀取變成了在中斷響應過程中對中斷號的讀取,對狀態端口的判斷變成了對中斷入口地址的確定。
從本質上來說,中斷處理方式和程序控制方式本身的速度指標一致,沒有大的差別。
可靠性
程序控制方式:
由于硬件不支持中斷方式,因此操作系統把CPU控制權交給應用程序后,只要應用程序不交還CPU控制權,操作系統就始終不能恢復對CPU的控制(無定時中斷)。應用程序與操作系統都是軟件模塊,操作系統屬于核心模塊,它們之間存在交接CPU控制權的關系。正是由于這樣的關系,一旦使用對外設的“程序控制方式”時,應用程序出現死鎖,則操作系統永遠無法恢復對系統的控制。應用程序的故障通過外設控制方式波及到作為核心模塊的操作系統,因此,根據關聯可靠性指標的計算可知,“程序控制方式”的關聯可靠性指標很低。
中斷處理方式:
由于提供定時中斷,操作系統可以在應用程序當前時間片結束后通過中斷服務程序重新獲得對CPU的控制權。應用程序的故障不會波及到操作系統,因此,中斷處理方式的關聯可靠性指標高。
可擴展性
程序控制方式:
由于所有應用程序中都包含對端口的操作,一旦硬件接口的設計發生變化,則所有應用程序都必須進行修改,這會使修改費用升高很多倍。因此,程序控制方式會使相關硬件模塊的局部修改指標相對較低。
中斷處理方式:
應用程序不直接操作端口,對端口的操作是由中斷服務程序來完成的。如果某個硬件接口的設計發生了變化,只需要修改它相關的中斷服務程序即可。因此,中斷處理方式使得相關硬件模塊的局部修改指標較高。
生命期
“程序控制方式”(CPU查詢方式)在早期的計算機系統中能夠滿足應用需求;但是隨著外部設備種類的增多、速度差異的加大,這種方式逐漸成為系統性能提高的障礙。它的生命期只限于早期計算機階段,因為當時外部設備少,且都是低速設備,到8位機出現以后,這種外設控制方式(體系結構)被淘汰。
“中斷處理方式”(外設請求方式)能夠協調CPU與外設間的速度差異,能夠協調各種外設間的速度差異,提高系統的工作效率(速度指標)。使應用程序與外設操作基本脫離開來,降低了程序的設備相關性(關聯可靠性指標、局部修改指標)。雖然目前某些快速設備相互間的通信沒有通過CPU,也沒有使用中斷處理方式,但是對于慢速設備、設備故障的處理來說,中斷處理方式仍然是最有效的。無論將來計算機系統中的元件怎樣變化,只要存在慢速設備與快速CPU之間的矛盾,使用中斷處理方式都是適合的。即便不使用中斷服務程序,中斷的概念也會保持很久。在短時期內,計算機系統還無法在所有領域離開人工交互操作,人的操作速度一定比機器的處理速度慢,因此慢速設備將仍然保持存在(但這不是慢速設備存在的唯一原因)。正因為存在這樣的需求,中斷處理方式具有較長的生命期。
-
cpu
+關注
關注
68文章
10829瀏覽量
211198 -
中斷
+關注
關注
5文章
895瀏覽量
41401
發布評論請先 登錄
相關推薦
評論