一、中斷的引入
- 當CPU啟動通道(或裝置)進行輸入輸出後,通道可以獨立工作,CPU即轉去做其他任務;
- 通道(或裝置)輸入輸出完成後,通道通過向CPU發中斷告訴CPU此次輸入輸出結束,讓CPU繼續執行原任務輸入輸出後的程式
中斷引入的目的:就是為了I/O和CPU可以并行,進而實作多道程式設計。
二、異常(陷入)的引入 當下述情況發生,CPU中斷目前的執行流程,轉到相應的錯誤處理程式或陷入處理程式:
- CPU執行指令時本身出現算術異常、零做除數、訪存指令越界、虛存缺頁等;
- 正常異常,即執行了一條trap指令,用于實作系統調用
三、中斷和異常的區分
1、中斷:通道(或裝置)完成輸入輸出後,通道會“通知”CPU此次輸入輸出結束,這個“通知”就是中斷。
可以看到,中斷與CPU正在執行的指令并沒有關系。
2、異常:而異常則是正在執行的指令本身出現了錯誤(如算術溢出、位址越界)等。
3、但中斷和異常的結果都是使得“CPU暫停正在執行的程式”:
CPU接受“中斷”後停止目前的任務,去繼續上一個任務或繼續當時在執行的任務(如何選擇則是與排程有關)。
CPU接受“異常”後停止目前任務,去處理這些錯誤。 處理完成後CPU傳回暫停點繼續工作。
4、中斷:與正在執行的指令無關,可以屏蔽
異常:與正在執行的指令有關,不可屏蔽
四、中斷/異常的分類
五、中斷的分級與屏蔽 中斷觸發器:寄存中斷事件的全部觸發器,一般一個觸發器表示一個中斷 中斷位:每個觸發器稱為一個中斷位,當發生中斷時相應位就被置上(0置到1) 中斷序号:給中斷一個順序編号 中斷響應:由硬體在執行每一條指令的最後時刻判斷是否有中斷,有則轉入作業系統的中斷處理程式(中斷響應必須是由硬體支援的)
六、中斷優先級 1、進階中斷>中級中斷>低級中斷
2、中斷優先級設定的原則
- 從提高資源使用率角度:高速裝置(如磁盤)優先級高,慢速裝置(如滑鼠鍵盤)優先級低
- 互動式系統中:可以考慮使用者響應滿意優先原則
- 實時系統中:實時裝置優先
3、處理機優先級:指處理機正在運作的程式的可響應中斷的級别。 在中斷處理程式運作之前前,去設定這個處理機優先級。 即當處理機處理某一個優先級中斷時,隻允許處理機去響應比該優先級高的中斷,低于或等于該優先級的中斷則屏蔽掉。 屏蔽掉的中斷由硬體暫時儲存,屏蔽解除時再處理。(此屏蔽稱為軟屏蔽) 如圖舉例: A、若此時處理機優先級處于0,那麼此時對于中斷優先級為1的中斷,它響應(1>0) B、若此時處理機優先級處于2,那麼此時對于中斷優先級為1的中斷,它不響應(1<2) 那麼此時對于中斷優先級為2的中斷,它不響應(2=2) 那麼此時對于中斷優先級為3的中斷,它響應(3>2)
處理機優先級的0級:就是處理機在運作核心态和使用者态程式的時候 當處理機處理某級别的中斷時,處理機的響應的放在哪個級别上,并按照上述過程選擇響應更進階中斷或屏蔽低級/同級中斷
4、中斷屏蔽:禁止處理機響應中斷(一般采用這種)或禁止中斷出現 中斷屏蔽的實作:
- 硬體支援:屏蔽寄存器
- 軟體實作:
屏蔽寄存器怎麼設定?
七、中斷/異常的響應
中斷響應:CPU能夠在每條機器指令執行周期内的最後時刻掃描中斷寄存器,檢視是否有中斷信号。若無則CPU繼續執行程式的後續指令;若有則轉入作業系統内的中斷處理程式
異常響應:異常是在執行指令的時候,由指令本身的原因發生的,CPU中指令的執行邏輯發現了異常則轉入作業系統的異常處理程式
八、幾個概念
PC寄存器:程式計數器,指向馬上要執行的那一條指令
斷點:檢測到中斷時,處理機剛執行完的那條執行恢複位址
恢複點:斷點的邏輯後續指令位址,PC的值
現場資訊:指中斷那一刻確定被中斷程式能繼續運作的有關資訊,如PC、通用寄存器、其他特殊寄存器等
核心态(系統态、監督方式、管态):允許特權指令執行的狀态;此狀态運作通路系統空間和使用者空間
使用者态(使用者态、使用者方式、目态):一般程式所運作的狀态;隻可以通路使用者空間
PS(PSW)寄存器:程式狀态字(處理機狀态字),寄存了處理機的運作狀态,包括:
- 目前處理機運作态(核心态or使用者态)
- 目前處理機優先級
- 各種控制位(如外中斷賦能位)
中斷向量:存放程式狀态字和中斷處理程式入口位址的記憶體單元; 中斷向量由作業系統初始化程式進行設定,硬體按照中斷号及異常類型的不同,來通過中斷向量表散轉到相應的處理程式上
九、中斷/異常響應和處理的過程
- 硬體儲存PC、PSW
- 軟體繼續儲存現場(儲存現場以“棧”的方式)
- 分析原因并轉中斷/異常處理程式
- (程序排程)恢複現場