歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux原子加鎖中關於SMP的困惑

Linux原子加鎖中關於SMP的困惑

日期:2017/2/28 16:13:12   编辑:Linux教程

接觸到linux加鎖內容時,其中一文說加鎖指令為單條指令,原子執行就不會存在競爭問題。比較困惑,假設兩條原子指令在兩個CPU上同時執行,難道就不會發生競態問題?

下面鏈接的文章中提到LOCK數據,阻止別的CPU訪問數據總線

http://www.linuxidc.com/Linux/2011-06/3732p2.htm

使用LOCK總線的方法確實又降低了並發的可能。

但是假設兩條鎖數據總線的原子操作指令確實是真真的並發執行的話,那麼是否會出現所有的CPU的#HLOCK pin同時電位拉低情況?若如此,所有CPU都不能訪問數據總線,結果會如何?

如果多個CPU使用的同一個晶振呢?

降低多CPU並發可能性方法還有就是每一個不同的CPU使用獨立的晶振,晶振頻率相同但是起震不同步,也許只有這樣才可能杜絕真的並發產生。但是不同的晶振又能保證其頻率一定是一樣的麼?就算頻率真的是一樣的,又真能保證不同晶振起震時間是交叉的麼?

不解,也許我那哥們每天從幾千萬條數據中尋找數據庫重復主鍵的原因就在於沒有真的鎖,只有並發可能性最小的鎖吧!

Copyright © Linux教程網 All Rights Reserved