1、不同版本的內核文件
單核:
ntkrnlpa.exe 2-9-9-12分頁
ntoskrnl.exe 10-10-12分頁
多核:
ntkrnlpa.exe 2-9-9-12分頁
ntoskrnl.exe 10-10-12分頁
單核跟多核中的相同名的文件裏面的代碼不一樣
2、Windows自旋鎖
參考:KeAcquireSpinLockAtDpcLevel
只要包含SpinLock都是和自旋鎖相關的API
關鍵代碼:
lock bts qword ptr [rcx], 0 //如果lock bts qword ptr [rcx], 1 則是將第1位置1
lock是鎖前綴,保證這條指令在同一時刻,只能有一個CPU訪問
bts指令:設置並檢測, 將rcx指向的數據的第0位置1,如果 [rcx]的值等於0,那麼CF = 1,否則CF = 0
自旋鎖由來因爲 pause指令
3、總結:
<1>自旋鎖只對多核有意義
<2>自選所與臨界區一樣、事件、互斥體一樣,都是一種同步機制,都可以讓當前線程處於等待狀態,區別在於自旋鎖不用切換線程