2.自旋锁
1、不同版本的內核文件
單核:
2-9-9-12分頁 ntkrnlpa.exe
10-10-12分頁 ntoskrnl.exe
多核:
2-9-9-12分頁 ntkrnlpa.exe
10-10-12分頁 ntoskrnl.exe
文件雖然相同但單核與多核的代碼是不一樣的,自旋鎖只有在多核下才是有價值的。
Windows自旋鎖
參考: KeAcquireSpinLockAtDpcLevel
多核下有很多包含SpinLock的函數,只要包含這個的函數都是和自旋鎖相關的
關鍵代碼:lock bts dword ptr [ecx], 0
LOCK是鎖前綴,保證這條指令在同一時刻只能有一個CPU訪問 BTS指令:設置并檢測將ECX指向數據的第0位置1如果[ECX]原來的值==0那么CF=1 否則CF=0
多核
單核直接retn 4
pause指令讓CPU在這旋轉一會,所以它叫自旋鎖。
總結:
總結
- 上一篇: 5.用户APC执行过程
- 下一篇: 3.线程等待与唤醒