Linux 利用異常機制達成兩大截然不同的目的:
SIGFPE 信號。進程接收後需採取恢復措施,若無對應處理常式則終止執行。核心調用異常處理程式的標準結構包含三階段:
ret_from_exception() 從異常返回詳細的缺頁異常處理將於第六章記憶體管理章節深入探討,本節重點放在中斷處理。
中斷發生時,並非所有操作具備相同緊迫性。將所有操作塞進中斷處理常式不當,因為:
TASK_RUNNING 狀態,否則可能導致系統僵死因此 Linux 將中斷操作分為三類:
ret_from_intr() 結束「下半部」處理非緊急可延遲操作,主要機制包括:
現代核心(2.6+)推薦使用 threaded IRQ 或 workqueue 取代傳統 tasklet,獲得更好的調度靈活性與即時性保證。
| 分類 | 執行時機 | 中斷狀態 | 典型範例 | 實作機制 |
|---|---|---|---|---|
| 緊急 | 立即 | 關閉中斷 | PIC 應答、硬體重設 | ISR 頂半部 |
| 非緊急 | 立即 | 開啟中斷 | 讀取硬體暫存器 | ISR 頂半部 |
| 可延遲 | 延後 | 開啟中斷 | 資料拷貝、協定處理 | Tasklet/Workqueue/Threaded IRQ |
深入理解異常與中斷機制,是進行核心模組開發、驅動程式撰寫與系統效能調校的基石。建議搭配核心原始碼(kernel/irq/, arch/x86/kernel/irq.c)與 Documentation/DocBook/kernel-hacking.tmpl 閱讀,並配合 ftrace/perf 進行實際追蹤分析。
VMware Workstation 共享資料夾設定:Host (Windows) ↔ Guest (Linux) 免網路檔案傳輸
Linux 網路驅動基礎架構:PCI 註冊、net_device 初始化與 NAPI 接入
Linux 磁碟分區核心知識與大容量磁碟 (超過 2TB) GPT 分區實戰指南
亞馬遜 AMI 自動安裝 Nginx 腳本:依賴包預裝、編譯安裝、控制指令、配置測試、平滑重載
共陽極與共陰極數碼管驅動電路詳解:動態掃描、硬件對比與代碼實現
Linux 進程終止命令大全:kill、killall、pkill、xkill 用法與信號機制詳解
Linux iostat 磁碟 I/O 監控全攻略:核心指標解讀、AIX/Linux 輸出差異、自動化告警腳本設計與實作