linux原子操作

2021-06-22 06:39:56 字數 827 閱讀 2369

原子操作:不能被本cpu和其他cpu中斷的操作

cache line

鎖cache line優於鎖資料匯流排

cpu平台本身可以保證的原子操作

對齊的不對齊的

lock字首

--**示例

。 cmpxchg(ptr,old,new):比較*ptr和old的值,相同就把new的值給ptr。

實現方式:通過巨集定義

#define cmpxchg(ptr,old,new)    __cmpxchg(ptr,old,new,sizeof(*(ptr))

#define __cmpxchg(ptr,old,new,sizeof(*(ptr))    __raw_cmpxchg(ptr),(old),(new),(size),lock_prefix)

自動帶lock字首的指令

xchg

事務記憶體(tsx on intel)(ibm power系列)

樂觀方式,最後驗證如果不通過就回滾。

intel的開發者手冊

ibm power系列的描述

linux kernel中的原子操作

-atomic_t的定義

typedef structatomic_t;

之所以定義成atomic_t是防止atomic的誤操作,在編譯的時候就可以檢查出來。

atomic_t的操作

--所有的操作都定義在include/linux/atomic.h中以及include/asm/atomic.h中

--常用的atomic操作:

.atomic_init(i)

.atomic_set(v,i) .

Linux 原子操作

所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡 的原子實際是使用了物理學裡的物質微粒的概念。原子操作需要硬體的支援,因此是架構相關的,其api和原子型別的定義都定義在核心原始碼樹的include asm atomi...

linux原子操作

原子操作指的是在執行過程中不會被別的 路徑所中斷的操作,下面列出原子操作相關的函式 1.void atomic set atomic t v,int i 設定原子變數的值為i 2.atomic t v atomic init 0 定義原子變數v並初始化為0 3.atomic read atomic ...

linux 原子操作

所謂原子操作,就是該操作絕不會在執行完畢前被任何其他任務或事件打斷,也就說,它的最小的執行單位,不可能有比它更小的執行單位,因此這裡的原子實際是使用了物理學裡的物質微粒的概念。原子操作需要硬體的支援,因此是架構相關的,其api和原子型別的定義都定義在核心原始碼樹的include asm atomic...