輪呼式 I/O 的動作流程包括初始化I/O裝置、開始輪詢、查詢裝置狀態、處理準備好的裝置和重複輪詢。雖然這種方式簡單易實現,但存在多種缺點,如效率低下、延遲高、不適用於實時系統以及電能消耗大等。因此,在現代計算機系統中,通常會採用中斷驅動 I/O 或直接記憶體存取(DMA)等更高效的資料傳輸方式來替代輪呼式 I/O。
輪呼式 I/O(Polling I/O)的動作流程
輪呼式 I/O 是指處理器以循環的方式定期查詢每個 I/O 裝置,確定其是否已經準備好進行資料轉移。這種方式的動作流程如下:
-
初始化:
-
開始輪詢:
- 處理器進入輪詢循環,依次查詢每個I/O裝置的狀態寄存器。
-
查詢裝置狀態:
- 處理器讀取每個I/O裝置的狀態寄存器,檢查其是否準備好進行資料傳輸。這通常涉及檢查一個「準備好」或「忙碌」位。
-
處理準備好的裝置:
- 如果某個I/O裝置已經準備好,處理器與該裝置進行資料傳輸。這可能是讀取資料(從I/O裝置到處理器)或寫入資料(從處理器到I/O裝置)。
-
重複輪詢:
- 處理器繼續查詢其他I/O裝置的狀態,並重複上述步驟,直到所有需要的資料傳輸完成。
輪呼式 I/O 的缺點
-
效率低下:
- 浪費處理器資源:處理器需要不斷地查詢I/O裝置的狀態,即使裝置尚未準備好進行資料傳輸,這會浪費大量的處理器時間和資源。
- 高處理器負載:處理器花費大量時間在輪詢上,這會增加系統負載,降低整體性能。
-
延遲高:
- 反應時間長:因為處理器需要逐一查詢所有I/O裝置的狀態,可能會導致對某些裝置的反應時間變長,特別是在有多個I/O裝置時。
-
不適用於實時系統:
- 實時性差:對於需要即時反應的應用(如實時控制系統),輪呼式 I/O 的反應時間可能無法滿足實時需求。
-
電能消耗:
- 功耗增加:處理器持續運行在高負荷下,會導致系統的能量消耗增加,不利於功耗敏感的應用。