蛻變成蝶 Linux裝置驅動中的併發控制

2021-10-06 03:11:57 字數 660 閱讀 8778

併發和競爭發生在兩類體系中:

訪問共享資源的**區域稱為臨界區critical sections,臨界區需要以某種互斥機制加以保護。在驅動程式中,當多個執行緒同時訪問相同的資源critical sections時(驅動程式中的全域性變數是一種典型的共享資源),可能會引發"競態",因此我們必須對共享資源進行併發控制。linux核心中解決併發控制的方法又中斷遮蔽、原子操作、自旋鎖、訊號量。(後面為主要方式)

中斷遮蔽:

使用方法

local_irq_disable()  //遮蔽中斷

...critical section //臨界區

...local_irq_enable() //開中斷

local_irq_disable/enable只能禁止/使能本cpu內的中斷,不能解決smp多cpu引發的競態,故不推薦使用,其適宜於自旋鎖聯合使用。

原子操作:

原子操作是一系列的不能被打斷的操作。

蛻變成蝶 Linux裝置驅動之按鍵裝置驅動

在上述的驅動系列部落格中,我們已經了解了關於阻塞和非阻塞 非同步通知 輪詢 記憶體和i o口訪問 併發控制等知識,按鍵裝置驅動相對來說是比較簡單的,本章內容可以加深我們對字元裝置驅動架構 阻塞與非阻塞 中斷定時器等相關知識的理解。在嵌入式的系統中,按鍵的硬體原理簡單,就是通過乙個上拉電阻將處理器的外...

蛻變成蝶 Linux裝置驅動之CPU與記憶體和I O

那是世上最遠的距離 思念讓我無法去呼吸 你的一動和一舉 佔據我心裡 陪我每個孤獨無盡的夜裡 用我心中盛放的畫筆 描繪你微笑時的絢麗 愛讓人痛徹心底 我卻不懷疑 你的存在是我生命的奇蹟 感受你的每一次的呼吸 多想告訴你我有多愛你 如果我說我願意 為你而死去 可否你的夢裡留下我痕跡 無數悸動變換歲月裡 ...

蛻變成蝶 Linux裝置驅動中的阻塞和非阻塞I O

今天意外收到乙個訊息,真是驚呆我了,部落格軒給我發了資訊,說是俺的部落格文章有特色可以出本書,這簡直讓我受寵若驚,俺只是個大三的技術宅,寫的部落格也是自己所學的一些見解和在網上看到我一些博文以及帖子裡綜合起來寫的,總之這又給了額外的動力,讓自己繼續前進,希望和大家能夠分享一些自己的經驗,在最需要奮鬥...