2010年1月31日 星期日

Linux Interrupts and Exceptions - 5

Kernel 使用 CPU 資源的策略如下:

1. 若 CPU 在執行 User mode 程式時有中斷發生,則切換 CPU 執行權去處理中斷要求。

2. 若 CPU 在執行 Kernel mode 程式時有中斷發生,則切換 CPU 執行權去處理中斷要求。

3. 若 CPU 在處理中斷服務時有另一個中斷發生,則切換 CPU 執行權去處理新的中斷要求,接著再繼續原來的中斷服務。

4. 中斷請求結束後,CPU 可能會去處理其他的 Kernel mode 程式,而不是原來在中斷發生前正在處理的 Kernel mode 程式。

以上規則 1~3 就是核心對巢狀 Exception 及 Interrupt 的處理方式,而規則 4 則是 Kernel preemption 的特性—在 Kernel mode 中,
一個正在執行的 process 可以被另一個 process (有較高的執行優先權) 所取代,也就是行程可搶奪 CPU 的使用權。
具有此特性的核心適用於硬體動作頻繁的場合,可使得正在等待 I/O 動作的行程讓出 CPU。