程序中斷一般簡稱中斷,是指CPU在正常運行程序的過程當中,因爲預選安排或發生了各類隨機的內部或外部事件,使CPU中斷正在運行的程序,而轉到爲相應的服務程序去處理,這個過程稱爲程序中斷。html
2、80x86微處理器的中斷 80x86微處理器的中斷類型通常分爲2類,即因爲執行某些指令引發的軟中斷和由處理器之外其餘控制電路發出中斷請求信號引發的硬中斷。 CPU要從主程序轉入中斷服務程序,必須知道該中斷服務程序的入口地址,即中斷向量。80x86爲CPU的PC機共有256箇中斷向量。post
中斷的通常過程:性能
主程序只是在設備A,B,C數據準備就緒時,纔去處理A,B ,C,進行數據交換。在速度較慢的外圍設備準備本身的數據時,CPU照常執行本身的主程序 。在這個意義上說,CPU和外圍設備的一些操做是並行地進行的,於是同串行進行的程序查詢方式相比,計算機系統的效率是大大提升了。以下圖:url
實際的中斷過程還要複雜一些,下圖示出了中斷處理過程的詳細流程圖.當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交換一個字的數據,或做其餘服務。.net
輪詢(Polling)I/O方式或程序控制I/O方式,是讓CPU以必定的週期按次序查詢每個外設,看它是否有數據輸入或輸出的要求,如有,則進行相應的輸入/輸出服務;若無,或I/O處理完畢柏,CPU就接着查詢下一個外設。設計
所需硬件:外設接口提供狀態端口、數據端口3d
軟件機制:應用程序必須定時查詢各個接口的狀態端口,判斷是否須要輸入、輸出數據,若是須要,則經過數據端口進行數據操做。htm
特色:CPU經過執行指令主動對外部設備進行查詢,外部設備處於被動地位。blog
上圖爲通常過程。
程序控制方式:
硬件的速度指標:因爲「程序控制方式」徹底採用軟件的方式對外設接口進行控制,因此它的硬件操做只是普通的端口讀寫,並沒有特別之處,其速度指標由總線傳輸速度、端口的響應速度共同決定。
對於這種外設控制方式,速度指標關鍵在於軟件。
中斷處理方式:
中斷處理方式自己所做的原子操做解釋和程序控制方式是一致的。
只不過由於加入了中斷請求和響應機制,對狀態端口的讀取變成了在中斷響應過程當中對中斷號的讀取,對狀態端口的判斷變成了對中斷入口地址的肯定。
從本質上來講,中斷處理方式和程序控制方式自己的速度指標一致,沒有大的差異。
程序控制方式:
因爲硬件不支持中斷方式,所以操做系統把CPU控制權交給應用程序後,只要應用程序不交還CPU控制權,操做系統就始終不能恢復對CPU的控制(無定時中斷)。應用程序與操做系統都是軟件模塊,操做系統屬於核心模塊,它們之間存在交接CPU控制權的關係。正是因爲這樣的關係,一旦使用對外設的「程序控制方式」時,應用程序出現死鎖,則操做系統永遠沒法恢復對系統的控制。應用程序的故障經過外設控制方式波及到做爲核心模塊的操做系統,所以,根據關聯可靠性指標的計算可知,「程序控制方式」的關聯可靠性指標很低。
中斷處理方式:
因爲提供定時中斷,操做系統能夠在應用程序當前時間片結束後經過中斷服務程序從新得到對CPU的控制權。應用程序的故障不會波及到操做系統,所以,中斷處理方式的關聯可靠性指標高。
程序控制方式:
因爲全部應用程序中都包含對端口的操做,一旦硬件接口的設計發生變化,則全部應用程序都必須進行修改,這會使修改費用升高不少倍。所以,程序控制方式會使相關硬件模塊的局部修改指標相對較低。
中斷處理方式:
應用程序不直接操做端口,對端口的操做是由中斷服務程序來完成的。若是某個硬件接口的設計發生了變化,只須要修改它相關的中斷服務程序便可。所以,中斷處理方式使得相關硬件模塊的局部修改指標較高。
「程序控制方式」(CPU查詢方式)在早期的計算機系統中可以知足應用需求;可是隨着外部設備種類的增多、速度差別的加大,這種方式逐漸成爲系統性能提升的障礙。它的生命期只限於早期計算機階段,由於當時外部設備少,且都是低速設備,到8位機出現之後,這種外設控制方式(體系結構)被淘汰。
「中斷處理方式」(外設請求方式)可以協調CPU與外設間的速度差別,可以協調各類外設間的速度差別,提升系統的工做效率(速度指標)。使應用程序與外設操做基本脫離開來,下降了程序的設備相關性(關聯可靠性指標、局部修改指標)。雖然目前某些快速設備相互間的通訊沒有經過CPU,也沒有使用中斷處理方式,可是對於慢速設備、設備故障的處理來講,中斷處理方式仍然是最有效的。不管未來計算機系統中的元件怎樣變化,只要存在慢速設備與快速CPU之間的矛盾,使用中斷處理方式都是適合的。即使不使用中斷服務程序,中斷的概念也會保持好久。在短時期內,計算機系統還沒法在全部領域離開人工交互操做,人的操做速度必定比機器的處理速度慢,所以慢速設備將仍然保持存在(但這不是慢速設備存在的惟一緣由)。正由於存在這樣的需求,中斷處理方式具備較長的生命期。
(轉載自:http://www.cnblogs.com/jhxk/articles/1893314.html)