中斷 (Interrupt)
定義:指中央處理器 (CPU) 接收到來自硬體或軟體的訊號,而進行相對應的處理優點:
相對於忙碌等待 (busy waiting)、輪詢 (polling) 有更好的效率,因為不需要額外的資源去確認是否有事件要處理,使用中斷可以專心於正在處理的事件,不需要時也可以進入休眠狀態節省資源,亦可實現分時多工、並行 (concurrency)應用:
協調 I/O,避免資料傳輸時 CPU被佔用優雅結束錯誤並繼續執行正常流程
即時系統
分類:
依執行程式:
外部中斷 (External Interrupt) 又稱非同步中斷 (Asynchronous):
與正在執行的程式無關的中斷信號,通常不可預期
e.g. I/O 完成或錯誤訊號
內部中斷 (Internal Interrupt、Trap) 又稱同步中斷 (Synchronous):
由執行程式所產生的中斷信號
e.g. 除以 0 的錯誤、使用到非法記憶體位址
與正在執行的程式無關的中斷信號,通常不可預期
e.g. I/O 完成或錯誤訊號
內部中斷 (Internal Interrupt、Trap) 又稱同步中斷 (Synchronous):
由執行程式所產生的中斷信號
e.g. 除以 0 的錯誤、使用到非法記憶體位址
依軟硬體:
硬體中斷 (Hardware Interrupt):
由周邊硬體元件要求使用 CPU 所產生的中斷訊號
e.g. 接收網路封包
軟體中斷 (Software Interrupt、Trap):
目前正執行的程式執行系統呼叫 (system call) 或指令有例外 (exceptions) 引起
e.g. 除以 0 的錯誤、要求 OS 提供服務處理
由周邊硬體元件要求使用 CPU 所產生的中斷訊號
e.g. 接收網路封包
軟體中斷 (Software Interrupt、Trap):
目前正執行的程式執行系統呼叫 (system call) 或指令有例外 (exceptions) 引起
e.g. 除以 0 的錯誤、要求 OS 提供服務處理
相關名詞:
中斷服務常式 (interrupt service routine、ISR、Interrupt handler):CPU 收到中斷後執行的子程式中斷向量表 (Interrupt vector table、IVT):記錄各中斷對應需要執行 ISR 的位置或是跳到 ISR 的 branch 指令,此表通常會放置在固定位置
流程:
0. 發生中斷1. 儲存目前 CPU 狀態,例如暫存器 (register)、程式計數器(program counter、PC) ,通常由硬體或 OS 完成
2. 經由 IVT 查詢對應的 ISR 起始位址並跳至該處
3. 完整執行 ISR
4. 回復之前儲存的中斷點繼續執行原本的任務
參考資料:
Interrupt vector table: why do some architectures employ a “jump table” VS an “array of pointers”?
ARM bootloader: Interrupt Vector Table Understanding
OS - Ch2 中斷、I/O、系統呼叫、OS 結構設計 和 虛擬機
中斷結構與中斷處理
Interrupt討論
Interrupt Handling (ARM)
What is the difference between an internal interrupt and software interrupt?
沒有留言:
張貼留言