Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 核心同步補充原語:Completion、中斷控制、軟中斷/Tasklet 延遲執行計數器

編輯:Linux 教學

Completion:解決信號量 up/down 竄改風險

參考《深入理解 Linux 核心》第 3 版 P216-217。down() 後釋放信號量可能訪問已銷毀資料結構。Completion 機制:

  • completion() 對應 up()(發送訊號)
  • wait_for_completion() 對應 down()(等待訊號)

關鍵差異:Completion 等待隊列自旋鎖確保 completion() 與 wait_for_completion() 不會並發執行;信號量僅防止多個 down() 並發。

中斷控制原語

local_irq_disable() / local_irq_save()   # 關中斷
local_irq_enable()  / local_irq_restore()  # 開中斷

可延遲函數 (Bottom Half / Tasklet) 控制

local_bh_disable()   # 禁止軟中斷/Tasklet(preempt_count 軟中斷計數器 +1)
local_bh_enable()    # 啟用軟中斷/Tasklet(計數器 -1,歸零時處理待決軟中斷)

軟中斷與 Tasklet 運行於中斷上下文(硬體中斷處理結束時激活)。有時希望 CPU 仍能響應硬中斷,但暫緩軟中斷,即使用 local_bh_disable() 而非關中斷。

Copyright © Windows教程網 All Rights Reserved