中斷

從 华夏文化百科
跳到: 導覽、 搜尋

名稱

中斷

簡介

中斷是計算機中的一個十分重要的概念,在現代計算機中毫無例外地都要採用中斷技術。什麼是中斷呢? 可以舉一個日常生活中的例子來說明,假如你正在給朋友寫信,電話鈴響了。這時,你放下手中的筆,去接電話。通話完畢,再繼續寫信。這個例子就表現了中斷及其處理過程:電話鈴聲使你暫時中止當前的工作,而去處理更為急需處理的事情(接電話),把急需處理的事情處理完畢之後,再回頭來繼續原來的事情。在這個例子中,電話鈴聲稱為「中斷請求」,你暫停寫信去接電話叫作「中斷響應」,接電話的過程就是「中斷處理」,相應地,在計算機執行程序的過程中,由於出現某個特殊情況(或稱為「事件」),使得暫時中止現行程序,而轉去執行處理這一事件的處理程序,處理完畢之後再回到原來程序的中斷點繼續向下執行,這個過程就是中斷。計算機為什麼要採用中斷為了說明這個問題,再舉一例子。假設你有一個朋友來拜訪你,但是由於不知道何時到達,你只能在大門等待,於是什麼事情也幹不了。如果在門口裝一個門鈴,你就不必在門口等待而去干其它的工作,朋友來了按門鈴通知你,你這時才中斷你的工作去開門,這樣就避免等待和浪費時間。計算機也是一樣,例如打印輸出,CPU傳送數據的速度高,而打印機打印的速度低,如果不採用中斷技術,CPU將經常處於等待狀態,效率極低。而採用了中斷方式,CPU可以進行其它的工作,只在打印機緩衝區中的當前內容打印完畢發出中斷請求之後,才予以響應,暫時中斷當前工作轉去執行向緩衝區傳送數據,傳送完成後又返回執行原來的程序。這樣就大大地提高了計算機系統的效率。 什麼是中斷的優先級我們仍然可以舉例說明中斷優先級的概念。在上面的例子中,如果在電話鈴響的同時,門鈴也響了,那麼你將在「接電話」和「開門」這兩個中斷請求中選擇,先響應哪一個請求。這就有一個誰優先的問題。如果「開門」比「接電話」重要(或者說「開門」比「接電話」的優先級高),那麼就應該先開門,然後再接電話,接完電話後再回頭來繼續寫信。這就是說,當同時有多個中斷請求時,應該先響應優先級較高的中斷請求。此外,如果在響應一個中斷,執行中斷處理的過程中,又有新的中斷事件發生而發出了中斷請求,應該如何處理也取決於中斷事件的優先級。當新發生的中斷事件的優先級高於正在處理的中斷事件時,又將中止當前的中斷處理程序,轉去處理新發生的中斷事件,處理完畢才返回原來的中斷處理。在上面的例子中,我們假設「開門」比「接電話」的優先級高。在你寫信時,電話鈴響了,你去接電話,在通話的過程中,門鈴又響了。因為「開門」的優先級高,你只能讓通話的對方稍等,放下電話去開門。開門之後再回頭繼續接電話,通話完畢再回去繼續寫信。而如果「開門」比「接電話」的優先級低,那麼在通話的過程中門鈴響了也可以不予理睬,通話結束再去開門。當然,在日常生活中,誰也不會為「開門」和「接電話」規定一個優先級別的高低。但是在計算機中,各種中斷事件很多,其優先級都有規定,否則就會亂套。在計算機中,中斷事件的優先級是根據事件的實時性、重要性和軟件處理的方便性來安排的。中斷的屏蔽中斷屏蔽也是一個十分重要的功能,所謂中斷螢幕蔽是指通過設置相應的中斷屏蔽位,禁止響應某個中斷。這樣作的目的,是保證在執行一些重要的程序中不響應中斷,以免造成遲緩而引起錯誤。例如,在系統啟動執行初始化程序時,就屏蔽鍵盤中斷,使初始化程序能夠順利進行。這時,敲任何鍵,都不會響應。當然對於一些重要的中斷是不能屏蔽的,例如重新啟動、電源故障、內存出錯、總線出錯等影響整個系統工作的中斷是不能屏蔽的。因此,從中斷是否可以被屏蔽來看,可分為可屏蔽中斷和不可屏蔽中斷兩類。中斷是怎樣分類的產生中斷請求的設備或事件稱為「中斷源」。從中斷源來看,中斷一般可分為三類:(1)由計算機硬件異常或故障引起的中斷,也稱為內部異常中斷。(2)由程序中執行了中斷指令引起的中斷,也稱為軟中斷。(3)外部設備(如輸入輸出設備)請求引起的中斷,也稱為外部中斷或I/O中斷。在這三類中斷中,外部中斷我們接觸得最多。下面我們來作進一步的介紹。中斷控制器和中斷通道因為每個設備都要使用中斷,每個設備也就需要一個傳送中斷請求的通道。而CPU中只有一條接收中斷請求的引腳,因此需要有一個機構來收集各個設備產生的各種中斷請求,並按優先級排列送給CPU。這個機構稱為中斷控制器。早期的中斷控制器是一片8259集成晶片,可以接收8個中斷請求信號,也就是可以有8個中斷通道。PC機允許使用15個中斷通道,因此需要兩片8259晶片。現在的微機仍然維持了這個結構,不過8259晶片已不是獨立的晶片,而被進一步集成到其它的大規模晶片中了。兩片8259之間用級聯的方法連接起來,即一片8259的輸出連接到另一片8259的輸入端。因此實際可以使用的中斷通道只有15個由於每個設備都要佔用一個中斷通道,如果有兩個或兩個以上的設備佔用了相同的通道時就會發生衝突,使得設備不能正常工作甚至死機。因此在安裝新的設備時,一定要選擇那些還沒有被佔用(保留)的中斷通道,否則就會引起衝突。選擇中斷通道一般是通過改變適配卡上的跳線來實現的。很多微機在安裝聲卡或電影卡時沒有正確地選擇好中斷通道,造成衝突後不能工作。對於有即插即用功能的微機和適配卡,能夠自動地選擇未被佔用的通道,就不需要我們去設置了。