日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

【Linux 内核 内存管理】优化内存屏障 ③ ( 编译器屏障 | 禁止 / 开启内核抢占 与 方法保护临界区 | preempt_disable 禁止内核抢占源码 | 开启内核抢占源码 )

發布時間:2025/6/17 linux 44 豆豆

文章目錄

  • 一、禁止 / 開啟內核搶占 與 方法保護臨界區
  • 二、編譯器優化屏障
  • 三、preempt_disable 禁止內核搶占 源碼
  • 四、preempt_enable 開啟內核搶占 源碼





一、禁止 / 開啟內核搶占 與 方法保護臨界區



如果要使用 " 內存屏障 " , 如 : 禁止 內核 搶占 " 方法保護臨界區 " :

首先 , 聲明 preempt_disable(); 宏 , 表示下面的代碼就是 " 方法保護臨界區 " 內的代碼 , 這些代碼禁止 內核 搶占 ;

然后 , 編寫 " 方法保護臨界區 " 代碼 ;

最后 , 使用 preempt_enable(); 宏 , 表示之后的代碼允許 內核 搶占 ;


preempt_disable(); 與 preempt_enable(); 之間的代碼 , 就是 " 方法保護臨界區 " 代碼 , 這樣可以 阻止編譯器重排指令 , 在 禁止 內核搶占 preempt_disable 與 開啟內核搶占 preempt_enable 之間的 " 方法保護臨界區 " 代碼中 , 添加 " 編譯器優化屏障 " ;


聲明 " 方法保護臨界區 " 代碼示例 :

preempt_disable();// 方法保護臨界區preempt_enable();



二、編譯器優化屏障



gcc 編譯器優化屏障 參考 【Linux 內核 內存管理】優化內存屏障 ① ( barrier 優化屏障 | 編譯器優化 | CPU 執行優化 | 優化屏障源碼 barrier 宏 ) 博客 ; " 編譯器優化屏障 " 是通過 barrier() 宏定義 實現的 , gcc 編譯器 的 " 優化屏障 " 定義在 linux-5.6.18\include\linux\compiler-gcc.h 源碼中 ;

/* Optimization barrier *//* The "volatile" is due to gcc bugs */ #define barrier() __asm__ __volatile__("": : :"memory")


源碼路徑 : linux-5.6.18\include\linux\compiler-gcc.h#20





三、preempt_disable 禁止內核搶占 源碼



在 Linux 內核源碼 linux-5.6.18\include\linux\preempt.h 中 , 定義了 preempt_disable 宏 ;


preempt_disable() 宏源碼如下 :

#define preempt_disable() \ do { \preempt_count_inc(); \barrier(); \ } while (0)

源碼路徑 : linux-5.6.18\include\linux\preempt.h#169





四、preempt_enable 開啟內核搶占 源碼



在 Linux 內核源碼 linux-5.6.18\include\linux\preempt.h 中 , 定義了 preempt_enable 宏

#ifdef CONFIG_PREEMPTION #define preempt_enable() \ do { \barrier(); \if (unlikely(preempt_count_dec_and_test())) \__preempt_schedule(); \ } while (0)

源碼路徑 : linux-5.6.18\include\linux\preempt.h#185

總結

以上是生活随笔為你收集整理的【Linux 内核 内存管理】优化内存屏障 ③ ( 编译器屏障 | 禁止 / 开启内核抢占 与 方法保护临界区 | preempt_disable 禁止内核抢占源码 | 开启内核抢占源码 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。