基本含義
中斷:指當出現需要時,CPU暫時停止當前程式的執行轉而執行處理新情況的程式和執行過程。即在程式運行過程中,系統出現了一個必須由CPU立即處理的情況,此時,CPU暫時中止程式的執行轉而處理這個新的情況的過程就叫做中斷。
雖然現在win9x已經有了PNP(即插即用)功能,但是中斷衝突仍然是不可避免的,其中最為容易發生衝突的就是IRQ、DMA和I/O。首先我們先了解一下IRQ、DMA和I/O的概念:
1、IRQ(Interrupt Request)
IRQ英文全稱Interrupt Request,中文翻譯為中斷請求線。計算機中有許多設備(例如音效卡、硬碟等)他們都能在沒有CPU介入的情況下完成一定的工作。但是這些設備還是需要定期中斷CPU,讓CPU為其做一些特定的工作。如果這些設備要中斷CPU的運行,就必需在中斷請求線上把CPU中斷的信號發給CPU。所以每個設備只能使用自己獨立的中斷請求線。一般來說在80286以上計算機中,共有16箇中斷請求線與各種需要用中斷的不同外設相連線,(每箇中斷線有一個標號也就是中斷號)。
中斷號的分配情況如下:
IRQ說明
0定時器
1鍵盤
2 串列設備控制器
3COM2
4COM1
5 LPT2
6軟碟控制器
7LPT1
8實時時鐘
9PC網路
10可用(Available)
11可用(Available)
12 PS/2 滑鼠
13數學協處理器
14 硬碟控制器
15 可用(Available)
NM1奇偶校驗
大家現在就可以清楚的看到,IRQ3、4、5、10、11、12、15可供用使用。
2、DMA(Direct Memory Access)
計算機與外設之間的聯繫一般通過兩種方法:一是通過CPU控制來進行數據的傳送;二是在專門的晶片控制下進行數據的傳送。我們所說的DMA,就是不用CPU控制,外設同記憶體之間相互傳送數據的通道,在這種方式下,外設利用DMA通道直接將數據寫入存儲器或將數據從存儲器中讀出,而不用CPU參與,系統的速度會大大增加。
DMA通道分配情況表
DMA0可用
DMA1EPC列印口
DMA2軟碟控制器
DMA38位數據傳送
DMA4DMA控制器
DMA5可用
DMA6可用
DMA7可用
3、I/O(INPUT/OUTPUT)
輸入/輸出連線埠,也就是計算機配件與CPU連線的接口。每個連線埠都有自己唯一的一個連線埠號,這個連線埠號稱為地址。每一個想和CPU通信的外設或配件都有不同的I/O地址,通常在PC機內部一共有1024個地址。
詳細解釋
中斷是計算機中的一個十分重要的概念,在現代計算機中毫無例外地都要採用中斷技術。什麼是中斷呢?可以舉一個日常生活中的例子來說明,假如你正在給朋友寫信,電話鈴響了。這時,你放下手中的筆,去接電話。通話完畢,再繼續寫信。這個例子就表現了中斷及其處理過程:電話鈴聲使你暫時中止當前的工作,而去處理更為急需處理的事情(接電話),把急需處理的事情處理完畢之後,再回頭來繼續原來的事情。在這個例子中,電話鈴聲稱為"中斷請求",你暫停寫信去接電話叫作"中斷回響",接電話的過程就是"中斷處理",相應地,在計算機執行程式的過程中,由於出現某個特殊情況(或稱為"事件"),使得CPU中止現行程式,而轉去執行處理該事件的處理程式(俗稱中斷處理或中斷服務程式),待中斷服務程式執行完畢,再返回斷點繼續執行原來的程式,這個過程稱為中斷。
中斷是為了使單片機具有對外或內部隨機發生的事件實時處理而設定的,中斷功能的存在,很大程度上提高了單片機處理外部或內部時間的能力。它也是學習單片機重要的功能之一。
對於單片機來講,中斷是指CPU在處理某一事件A時,發生了另一事件B,請求CPU迅速去處理(中斷髮生);CPU暫時停止當前的工作(中斷回響),轉去處理事件B(中斷服務);待CPU將事件B處理完畢後,再回到原來事件A被中斷的地方繼續處理事件A(中斷返回),這一過程稱為中斷。
計算機為什麼要採用中斷
為了說明這個問題,再舉一例子。假設你有一個朋友來拜訪你,但是由於不知道何時到達,你只能在大門等待,於是什麼事情也幹不了。如果在門口裝一個門鈴,你就不必在門口等待而去乾其它的工作,朋友來了按門鈴通知你,你這時才中斷你的工作去開門,這樣就避免等待和浪費時間。計算機也是一樣,例如列印輸出,CPU傳送數據的速度高,而印表機列印的速度低,如果不採用中斷技術,CPU將經常處於等待狀態,效率極低。而採用了中斷方式,CPU可以進行其它的工作,只在印表機緩衝區中的當前內容列印完畢發出中斷請求之後,才予以回響,暫時中斷當前工作轉去執行向緩衝區傳送數據,傳送完成後又返回執行原來的程式。這樣就大大地提高了計算機系統的效率。
什麼是中斷的優先權
我們仍然可以舉例說明中斷優先權的概念。在上面的例子中,如果在電話鈴響的同時,門鈴也響了,那么你將在"接電話"和"開門"這兩個中斷請求中選擇,先回響哪一個請求。這就有一個誰優先的問題。如果"開門"比"接電話"重要(或者說"開門"比"接電話"的優先權高),那么就應該先開門,然後再接電話,接完電話後再回頭來繼續寫信。這就是說,當同時有多箇中斷請求時,應該先回響優先權較高的中斷請求。
此外,如果在回響一個中斷,執行中斷處理的過程中,又有新的中斷事件發生而發出了中斷請求,應該如何處理也取決於中斷事件的優先權。當新發生的中斷事件的優先權高於正在處理的中斷事件時,又將中止當前的中斷處理程式,轉去處理新發生的中斷事件,處理完畢才返回原來的中斷處理。在上面的例子中,我們假設"開門"比"接電話"的優先權高。在你寫信時,電話鈴響了,你去接電話,在通話的過程中,門鈴又響了。因為"開門"的優先權高,你只能讓通話的對方稍等,放下電話去開門。開門之後再回頭繼續接電話,通話完畢再回去繼續寫信。而如果"開門"比"接電話"的優先權低,那么在通話的過程中門鈴響了也可以不予理睬,通話結束再去開門。當然,在日常生活中,誰也不會為"開門"和"接電話"規定一個優先權別的高低。但是在計算機中,各種中斷事件很多,其優先權都有規定,否則就會亂套。在計算機中,中斷事件的優先權是根據事件的實時性、重要性和軟體處理的方便性來安排的。
中斷的禁止
中斷禁止也是一個十分重要的功能,所謂中斷禁止是指通過設定相應的中斷禁止位,禁止回響某箇中斷。這樣作的目的,是保證在執行一些重要的程式中不回響中斷,以免造成遲緩而引起錯誤。例如,在系統啟動執行初始化程式時,就禁止鍵盤中斷,使初始化程式能夠順利進行。這時,敲任何鍵,都不會回響。當然對於一些重要的中斷是不能禁止的,例如重新啟動、電源故障、記憶體出錯、匯流排出錯等影響整個系統工作的中斷是不能禁止的。因此,從中斷是否可以被禁止來看,可分為可禁止中斷和不可禁止中斷兩類。
中斷源
凡是能夠引起中斷原因或提出中斷請求的設備和異常故障均稱被稱為"中斷源"。
通常中斷源有以下幾種:
(1)外部設備請求中斷。一般的外部設備(如鍵盤、印表機和A / D轉換器等)在完成自身的操作後,向CPU發出中斷請求,要求CPU為他服務。
硬體中斷分為外部中斷和內部中斷。
外部中斷一般是指由計算機外設發出的中斷請求,如:鍵盤中斷、印表機中斷、定時器中斷等。外部中斷是可以禁止的中斷,也就是說,利用中斷控制器可以禁止這些外部設備的中斷請求。
內部中斷是指因硬體出錯(如突然掉電、奇偶校驗錯等)或運算出錯(除數為零、運算溢出、單步中斷等)所引起的中斷。內部中斷是不可禁止的中斷。
(2)故障強迫中斷。計算機在一些關鍵部位都設有故障自動檢測裝置。如運算溢出、存儲器讀出出錯、外部設備故障、電源掉電以及其他報警信號等,這些裝置的報警信號都能使CPU中斷,進行相應的中斷處理。
(3)實時時鐘請求中斷。在控制中遇到定時檢測和控制,為此常採用一個外部時鐘電路(可程式)控制其時間間隔。需要定時時,CPU發出命令使時鐘電路開始工作,一旦到達規定時間,時鐘電路發出中斷請求,由CPU轉去完成檢測和控制工作。
(4)數據通道中斷。數據通道中斷也稱直接存儲器存取(DMA)操作中斷,如磁碟、磁帶機或CRT等直接與存儲器交換數據所要求的中斷。
(5)程式自願中斷。CPU執行了特殊指令(自陷指令)或由硬體電路引起的中斷是程式自願中斷,是指當用戶調試程式時,程式自願中斷檢查中間結果或尋找錯誤所在而採用的檢查手段,如斷點中斷和單步中斷等。
中斷分類 (1)按中斷處理方式,可分為簡單中斷和程式中斷。簡單中斷採用周期竊用的方法來執行中斷服務,有時也稱數據通道或DMA;程式中斷不是竊用中央處理機的周期來進行中斷處理,而是中止現行程式的執行轉去執行中斷服務程式。
(2)按中斷產生的方式,中斷可分為自願中斷和強迫中斷。自願中斷即通過自陷指令引起中斷,或稱軟體中斷,例如程式自願中斷;強迫中斷是一種隨機發生的實時中斷,如外部設備請求中斷、故障強迫中斷、實時時鐘請求中斷和數據通道中斷等。
(3)按引起中斷事件所處的地點,中斷可分為內部中斷和外部中斷。外部中斷也稱為外部硬體實時中斷,他由來自CPU某一引腳上的信號引起;內部中斷也稱軟體指令中斷,他是為了處理程式運行過程中發生的一些意外情況或調試程式而提供的中斷。
(4)根據微處理器內部受理中斷請求的情況,中斷可分為可禁止中斷和不可禁止中斷。凡是微處理器內部的中斷觸發器(或許中斷允許觸發器)能夠拒絕回響的中斷,稱為可禁止中斷;凡是微處理器內部的中斷觸發器(或許中斷允許觸發器)不能夠拒絕回響的中斷,稱為不可禁止中斷。
中斷系統的功能中斷系統應具有的功能可歸結為中斷處理和中斷控制。
(1)中斷處理。中斷處理包括發現中斷請求、回響中斷請求、中斷處理和中斷返回。
(2)中斷控制。中斷控制主要是實現中斷優先權的排隊和中斷嵌套。
中斷控制器和中斷通道
因為每個設備都要使用中斷,每個設備也就需要一個傳送中斷請求的通道。而CPU中只有一條接收中斷請求的引腳,因此需要有一個機構來收集各個設備產生的各種中斷請求,並按優先權排列送給CPU。這個機構稱為中斷控制器。早期的中斷控制器是一片8259集成晶片,可以接收8箇中斷請求信號,也就是可以有8箇中斷通道。PC機允許使用15箇中斷通道,因此需要兩片8259晶片。現在的微機仍然維持了這個結構,不過8259晶片已不是獨立的晶片,而被進一步集成到其它的大規模晶片中了。
兩片8259之間用級聯的方法連線起來,即一片8259的輸出連線到另一片8259的輸入端。因此實際可以使用的中斷通道只有15個
由於每個設備都要占用一個中斷通道,如果有兩個或兩個以上的設備占用了相同的通道時就會發生衝突,使得設備不能正常工作甚至當機。因此在安裝新的設備時,一定要選擇那些還沒有被占用(保留)的中斷通道,否則就會引起衝突。選擇中斷通道一般是通過改變適配卡上的跳線來實現的。很多微機在安裝音效卡或顯示卡時沒有正確地選擇好中斷通道,造成衝突後不能工作。對於有即插即用功能的微機和適配卡,能夠自動地選擇未被占用的通道,就不需要我們去設定了。
(更加詳細的可以查閱大學教材《微機原理》或《計算機組成原理》)
防止方法
要防止中斷衝突,其實就是要知道什麼設備容易產生中斷衝突,只要知道了這點,在使用這些設備時稍微注意一下就可以了。下面我列出一些容易衝突的設備,希望對讀者有用。
1、音效卡:一些早期的ISA型音效卡,系統很有可能不認,就需要用戶手動設定(一般為5)
2、內置數據機和滑鼠:一般滑鼠用COM1,內置數據機使用COM2的中斷(一般為3),這時要注意此時COM2上不應有其它設備
3、網卡和滑鼠:此問題一般發生在滑鼠在COM1口,使用中斷為3,這時要注意通常網卡的默認中斷為3,兩者極有可能發成衝突。
4、印表機和EPP掃瞄器:在安裝掃瞄器驅動程式時應將印表機打開,因為兩個設備中串聯,所以為了防止以後掃瞄器驅動程式設定有誤,一定要將印表機打開再安裝掃瞄器驅動程式。
5、作業系統和BIOS:如果計算機使用了“即插即用”作業系統(例如win98),應將BIOS中PNP OS Installed設定為Yes這樣可讓作業系統重新設定中斷。
6、PS/2滑鼠和BIOS:在使用PS/2滑鼠時應將BIOS中PS/2 Mouse Function Control打開或設定為Auto,只有這樣BIOS才能將IRQ12分配給PS/2滑鼠用。