107.08.14 作業系統 中斷 (Interrupt)

中斷 (Interrupt)

定義:指中央處理器 (CPU) 接收到來自硬體或軟體的訊號,而進行相對應的處理


優點:

相對於忙碌等待 (busy waiting)、輪詢 (polling) 有更好的效率,因為不需要額外的資源去確認是否有事件要處理,使用中斷可以專心於正在處理的事件,不需要時也可以進入休眠狀態節省資源,亦可實現分時多工、並行 (concurrency)

應用:

協調 I/O,避免資料傳輸時 CPU被佔用
優雅結束錯誤並繼續執行正常流程
即時系統

分類:

依執行程式:
外部中斷 (External Interrupt) 又稱非同步中斷 (Asynchronous):
與正在執行的程式無關的中斷信號,通常不可預期
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 提供服務處理

相關名詞:

中斷服務常式 (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?

沒有留言:

張貼留言

^ Top