亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
1234下一頁
最近訪問板塊 發(fā)新帖
查看: 8737 | 回復(fù): 35
打印 上一主題 下一主題

[內(nèi)核同步] 關(guān)于自旋鎖中的忙等的疑問 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-12-09 12:58 |只看該作者 |倒序瀏覽
我們知道內(nèi)核中,如果某個自旋鎖暫時獲取不到,就進(jìn)入一個忙等階段,大概的代碼歸納為:

while (lock != 1) {
    __asm__ __volatile__("rep;nop": : :"memory");
}

查了一些資料也不太清楚rep;nop的作用,我想問的是,如果這里就是簡單的寫一個死循環(huán)會怎樣,即:
while (lock != 1);

請大牛指點!謝謝

論壇徽章:
0
2 [報告]
發(fā)表于 2012-12-09 13:06 |只看該作者
“如果用一段死循環(huán)來代替這個循環(huán)是不行的,那樣會鎖住總線,unlock想設(shè)置值都不能了。rep;nop就是要讓CPU休息一下,把總線暫時讓出來!,看到別人有這種解釋,對嗎?

論壇徽章:
1
雙魚座
日期:2013-08-28 13:47:26
3 [報告]
發(fā)表于 2012-12-09 13:43 |只看該作者

論壇徽章:
0
4 [報告]
發(fā)表于 2012-12-09 15:27 |只看該作者
本帖最后由 dingyujie 于 2012-12-09 15:28 編輯

謝謝了,文章講的很好!不過我的疑問是,如果不加這個指令,直接使用一個while循環(huán)會怎樣呢?會像我在2樓上說的那樣嗎回復(fù) 3# firkraag


   

論壇徽章:
0
5 [報告]
發(fā)表于 2012-12-09 15:51 |只看該作者
3樓給的鏈接中說到了. nop 是編譯為 pause, 也就是讓CPU以極低的速率和功耗在運行. 如果不加 rep;nop, cpu是以極高的速率運行的,也就耗電.

而且,好像還有其他的目的, 是為了規(guī)避性能損失吧.

鏈接中有提到如下:
提升 spin-wait loops(自旋鎖循環(huán)等待)的性能。在執(zhí)行一個 spin-wait loop 時,Pentium4 處理器會
遇到嚴(yán)重的性能損失.PAUSE 指令會向處理器提供一種提示:告訴處理器所執(zhí)行的代碼序列是一個 spin-wait loop。
處理器會根據(jù)這個提示而避開內(nèi)存序列沖突(memory order violation),也就是說對 spin-wait loop 不做緩存,不做指令
重新排序等動作。這樣就可以大大的提高了處理器的性能。正是基于此,才建議在 spin-wait loops 中使用 pasuse 指令。

PAUSE指令的另外一個功能是讓 Pentium4 處理器在執(zhí)行 spin-wait loop 時可以減少電源的消耗。
在等待資源而執(zhí)行自旋鎖等待時,Pentium4 處理器以極快的速度執(zhí)行自旋等待時,將會消耗很多電能,
但使用 pause 指令則可以極大的減少處理器的電能消耗。  

論壇徽章:
0
6 [報告]
發(fā)表于 2012-12-09 15:51 |只看該作者
@firkraag 學(xué)習(xí)了,謝謝你的鏈接.

論壇徽章:
0
7 [報告]
發(fā)表于 2012-12-09 20:20 來自手機(jī) |只看該作者
一個忙等,有功耗考慮,有優(yōu)化,不簡單

論壇徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龍
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
8 [報告]
發(fā)表于 2012-12-09 20:52 |只看該作者
pasuse 另外一個作用是,超線程一個線程pasuse 會將處理器讓給另外一個線程,避免持有鎖的線程挨餓。

論壇徽章:
0
9 [報告]
發(fā)表于 2012-12-10 08:51 |只看該作者
我覺得這句話還有這樣的作用,讓寄存器的值都失效,而要cpu重新從memory加載變量(lock)的值。否則如果一直從寄存器讀取lock的值,那這就是個死循環(huán)了。

論壇徽章:
0
10 [報告]
發(fā)表于 2012-12-10 10:37 |只看該作者
有道理!  回復(fù) 9# leslielg


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP