外設的驅動模式:中斷、輪詢

  • 驅動程序的基本形式是中斷模式,中斷屬於異步編程。
  • 關閉中斷可以形成輪詢模式。輪詢和中斷是驅動程序設計的兩種基本模式,其它模式在這基礎上進行延申。
  • 輪詢模式可以是忙等待輪詢和擇機輪詢。
    • 忙等待持續輪詢狀態,直到完成,這期間主循環不能處理其它事務,忙等待屬於順序編程。
    • 擇機輪詢檢測到未完成時將退出,轉而處理其它事務,當有空閒時再次輪詢,需要藉助狀態機實現保存和恢復上下文,擇機輪詢是異步編程。
  • 中斷配合操作系統形成掛起等待模式,掛起等待是順序編程。
  • 協程是對擇機輪詢的簡化,將顯式的狀態機設計轉爲隱式狀態機,讓異步編程看起來像順序編程,簡化設計、提高可讀性。
  • 事件驅動模型是中斷模式的泛化。
  • DMA和FIFO是優化措施,將多箇中斷或輪詢簡化爲一箇中斷或輪詢。
  • 底層驅動是異步編程,上層應用可以按異步編程來使用,也可以按順序編程來使用,異步編程可以封裝成順序編程。
  • 底層驅動是順序編程,上層應用只能按順序編程來使用,順序編程不能封裝成異步編程。
  • 輪詢模式實現起來比較簡單,但執行效率低,會浪費處理運算資源,擇機輪詢的及時性較差。
  • 中斷模式執行效率高,及時性高,實現起來麻煩一些。
  • 應該按應用需求選擇採用哪種模式,輪詢和中斷各有千秋,各有各的好處。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章