中斷的基本概念:
程序中斷是指在計算機執行實現程序的過程中,出現某些急需處理的異常情況或特殊請求,CPU暫時中止現行程序,而轉去這些異常情況或特殊請求進行處理,在處理完畢后CPU又自動返回到現行程序的斷點處,繼續執行原程序。
中斷系統是計算機實現中斷功能的軟、硬件總稱。在CPU一側配置了中斷機構,在設備一側配置了中斷控制接口,在軟件上設計了相應的中斷服務程序。
一個完整的中斷過程包括:
中斷請求:是指中斷源(引起中斷的事件或設備)向CPU
發出的請求中斷的要求。
中斷判優:當有多個中斷源發出請求時,需要通過適當的辦法決定先處理哪個中斷請求;
中斷響應:指CPU中止現行程序轉至中斷服務程序的過程;
中斷處理:就是指CPU執行中斷服務程序;
中斷返回: 執行完中斷服務程序后,返回到被中斷的程序
中斷的作用:
(1)CPU與I/O設備並行工作
(2)硬件故障處理
(3)實現人機聯系:在計算機工作過程中,如果用戶要干預機器,如查看計算的中間結果,了解機器的工作狀態,給機器下達臨時性的命令等。在沒有中斷系統的計算機里這些功能幾乎是無法實現的。
(4)實現多道程序和分時操作
(5)實現實時處理
(6)實現應用程序和操作系統的聯系
(7)多處理機系統各處理機間的聯系
中斷的產生和相應的概念
(1)中斷源:
引起中斷的事件,即發出中斷請求的來源。
■外中斷:I/O設備等來自主機外部設備的中斷。(通常所說的中斷就是外中斷)
■內中斷:處理器硬件故障或程序出錯引起的中斷。(也叫異常)
■軟中斷:由“Trap”指令產生的軟中斷,這是在程序中預先安排好的
中斷觸發器:每個中斷源的接口電路中都有一個“中斷觸發器”,用於保存中斷源向CPU的中斷請求信號。多個中斷觸發器構成中斷寄存器。
主要上圖所示的中斷分類將CPU內部的異常、例外、陷入都有歸為了內中斷的行列中,不去區分是硬件引起還是軟件引起的了。
這里重新說明一下缺頁中斷是程序性中斷。
(2)中斷的分級與中斷優先權
在設計中斷系統時,要把全部中斷源按中斷性質和處理的輕重緩急進行排隊並給予優先權。
(3)禁止中斷和中斷屏蔽
a、禁止中斷:
產生中斷源后,由於某種條件的存在,CPU不能中止現行程序的執行,稱為禁止中斷。
一般在CPU的內部設置一個“中斷允許”觸發器,只有該觸發器為“1”時,才允許處理機響應中斷,反之,則不響應所有中斷源的中斷請求。
“中斷允許”觸發器可以通過“開中斷”和“關中斷”指令來置位和復位。
b、中斷屏蔽
當產生中斷請求時,用程序方式有選擇地封鎖部分中斷,而允許其余部分的中斷仍能得到響應。
實現的方法是為每個中斷源設置一個中斷屏蔽觸發器來屏蔽該設備的中斷請求。各個設備的中斷屏蔽觸發器構成中斷屏蔽寄存器。
當然有些中斷源的中斷請求是不可屏蔽的。所以中斷又分為可屏蔽中斷和非屏蔽中斷。
中斷處理
中斷處理過程:
(1)關中斷
進入不可再次響應中斷的狀態,由硬件自動實現。在保存現場過程中,即使有更高級的中斷源申請中斷,CPU也不應該響應。否則,如果現場保存不完整,在中斷服務程序結束之后,也就不能正確地恢復現場並繼續執行現行程序。
(2)保存斷點和現場
現場信息一般指的是程序狀態字,中斷屏蔽寄存器和CPU中某些寄存器的內容。
(3)判別中斷源,轉向中斷服務程序。
在多個中斷源同時請求中斷的情況下。本次實際響應的只能是優先權最高的那個中斷源、所以,需進一步判別中斷源,並轉入相應的中斷服務程序入口。
(4)開中斷。接下去就要執行中斷服務程序,開中斷將允許更高級中斷請求得到響應。實現中斷嵌套。
(5)執行中斷服務程序。
(6)退出中斷。在退出時,又應進入不可中斷狀態,即關中斷,恢復現場、恢復斷點,然后開中斷,返回原程序執行。
進入中斷時執行的關中斷、保存斷點等操作一般是由硬件實現的,它類似於一條指令,但它與一般的指令不同,不能被編寫在程序中。因此,常常稱為‘中斷隱指令’。
判別中斷源
判別中斷源可以用軟件和硬件兩種方法來判優。
(1)查詢法(軟件法)
由測試程序按一定優先排隊次序檢查各個設備的“中斷觸發器”。當遇到第一個‘1’標志時,即找到了優先進行處理的中斷源,通常取出其設備碼,根據設備碼轉入相應的中斷服務程序。
(2)串行排隊鏈法(硬件判優)
由硬件確定中斷源。
問題:找到優先級最高的中斷請求后,如何轉入其中斷服務程序?
一般采用中斷向量法:
向量中斷方式是為每一個中斷源設置一個中斷向量(就是中斷服務程序的入口地址),所有的中斷向量存放在主存的某個固定位置(中斷向量表)。CPU響應某個中斷源的中斷請求時,根據設備提供的中斷類型碼,訪問中斷向量表,就可以找到該中斷源的中斷服務程序的入口地址。
中斷向量表,也稱中斷入口地址表(或異常表),位於0000H~03FFH。共256組,每組占四個字節 CS:IP 。向量地址=中斷類型號x4
8086/8088的中斷向量表
中斷向量表(異常表)中每一項是對應異常處理程序的入口地址,被稱為中斷向量(Interrupt Vector)
有了中斷類型號,就可得到中斷向量,從而轉到中斷服務程序執行。
但是,中斷類型號怎么得到呢?
通過中斷類型號形成電路。
多重中斷處理——中斷嵌套
在處理某一個中斷的過程中又發生了新的更高級中斷源的中斷申請,且CUP又處於開中斷狀態下,CPU就要中斷該服務程序的執行,轉去進行新的中斷處理服務程序。一般情況下與它同級的或比它低級的新中斷請求,CPU不能響應其請求。
中斷優先級的響應次序由硬件排隊線路決定。一旦設計完成,系統的優先級別就決定了,缺乏改變優先權級別的靈活性。
在有優先級中斷屏蔽碼控制的條件下,可以不改變系統排隊線路,使其中斷響應次序不同。
中斷屏蔽技術
例題: