2012-11-01 47 views
1

一些os內核使用xchg指令來實現spinlock。在獲取鎖定功能的實現中,通常在使用xchg指令獲取鎖定之前禁用中斷。那麼,xchg指令可以確保內存順序?我的意思是可以xchg指令確保禁用中斷後不會被調用?xchg指令可以確保內存順序嗎?

回答

1

沒有XCHG指令不能這樣做。 在XCHG指令執行過程中,處理器的LOCK信號被自動聲明,所以我們不需要額外的LOCK前綴來確保指令是以原子方式執行的。 XCHG總是以原子方式執行!並且不需要禁用中斷。

+0

XCHG總是以原子方式執行。但只有當操作數是內存時,鎖定信號纔是隱含的。當然,當所有的操作數都是寄存器的時候,不需要鎖定信號。 – Vince