JMM模型
????????? 如果三個cup的線程都從主內存中取到X=1的值進行計算,此時就要保證數據的一致性穴张,目前CPU使用MESI(緩存一致性協(xié)議)來控制,如果CPU1想從主內存拿到X=1這個值想要計算岂膳,首先寄存器會在本身尋找如果沒有砰蠢,則去緩存L1,L2,L3中依次尋找,如果都沒有則去主內存中拿到CPU緩存中最終放入寄存器計算虱岂,拿到后將X標注為E獨占狀態(tài)玖院,標記為E的同時又開啟了總線嗅探機制會時刻監(jiān)聽內存中X值,如果此時CPU2去拿主內存中的X=1在經過總線時會被監(jiān)聽到第岖,此時CPU1會將緩存行中的X狀態(tài)改為S共享狀態(tài)难菌,CPU2讀到值后也會標注為S共享狀態(tài),如果CPU1把X=1進行計算后蔑滓,得到X=2此時CPU1會把X的緩存行鎖住并且狀態(tài)置M修改郊酒,在把X=2回寫到主內存中消息經過總線會被CPU2監(jiān)聽機制監(jiān)聽到此時CPU2會把之前讀到的X=1置為I失效(大寫字母哎),然后接著CPU1會把X=2回寫到主內存中回寫完以后又會把CPU1中的X=2置為E獨占狀態(tài)键袱,如果CPU2還訪問得到X就要把之前存在緩存中的X=1丟棄燎窘,然后去主存? 中重新得到X=2,讀完之后CPU1嗅探到了CPU2讀到主存中的數據此時CPU1與CPU2又會把自己的狀態(tài)變成共享S了蹄咖。
??(2)MESI緩存一致性協(xié)議
??(3)線程分為用戶級別和內核級別線程褐健,比如java虛擬機 PS 或者播放器這些進程他們開啟一些線程,這些線程被稱作虛假線程不能真實操作CPU澜汤,他們需要被內核級線程提供的接口接收轉換蚜迅,真正接觸CPU的是內核級線程舵匾,CPU有Ring0,Ring3這些特權級別谁不,如果想操作CPU的話只能是Ring0級別也就是說只有內核級線程才能接觸到他坐梯,用戶級線程是用的ring3級別
???? 3.有序性:操作要保持有序性是因為JVM在執(zhí)行一些操作時候如果交換執(zhí)行順序不影響(單線程)最終結果的時候熊镣,可能會把執(zhí)行順序改變但在多線程情況下情況比較復雜卑雁,比如單例模式雙重檢查鎖就存在這個問題,可以加上volatie關鍵字禁止cpu和jvm對當前操作的指令重排绪囱。
??????? 答: 執(zhí)行器編譯階段也就是加載class文件編譯成字節(jié)碼的時候和cpu運行時也就是cpu執(zhí)行匯編指令時執(zhí)行的。
?????? 答:java提供了一個類?Unsafe 的fullFence(),loadFence(),storeFence(),三個方法手動添加內存屏障粹排。
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
- 文/潘曉璐 我一進店門突委,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叹誉,你說我怎么就攤上這事鸯两。” “怎么了长豁?”我有些...
- 正文 為了忘掉前任酸舍,我火速辦了婚禮帅韧,結果婚禮上,老公的妹妹穿的比我還像新娘啃勉。我一直安慰自己忽舟,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叮阅,像睡著了一般刁品。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浩姥,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弊决!你這毒婦竟也來了担猛?” 一聲冷哼從身側響起,我...
- 正文 年R本政府宣布夫椭,位于F島的核電站,受9級特大地震影響氯庆,放射性物質發(fā)生泄漏蹭秋。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一堤撵、第九天 我趴在偏房一處隱蔽的房頂上張望仁讨。 院中可真熱鬧,春花似錦实昨、人聲如沸洞豁。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽丈挟。三九已至刁卜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間礁哄,已是汗流浹背长酗。 一陣腳步聲響...