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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 1890 | 回復(fù): 7
打印 上一主題 下一主題

大家來(lái)看一下,內(nèi)核同步機(jī)制-spin_lock疑問(wèn) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-12-23 10:58 |只看該作者 |倒序?yàn)g覽
下面的同步討論假設(shè)只是在單CPU系統(tǒng)上(可搶占)
在單CPU系統(tǒng)上內(nèi)核同步機(jī)制spin_lock代碼如下:
#define spin_lock(lock)   _spin_lock(lock)
#define _spin_lock(lock)  __LOCK(lock)
#define __LOCK(lock) \
do { preempt_disable(); __acquire(lock); (void)(lock); } while (0)
可見(jiàn)在單CPU系統(tǒng)上加鎖操作只是做了一個(gè)禁止搶占操作.

下面我有兩個(gè)疑問(wèn):
1: 假設(shè)進(jìn)程A正在訪(fǎng)問(wèn)臨界區(qū)D,此時(shí)系統(tǒng)來(lái)了一個(gè)IRQ將任務(wù)B喚醒;A任務(wù)被搶系統(tǒng)執(zhí)行任務(wù)B,如果此時(shí)任務(wù)B
      也訪(fǎng)問(wèn)臨界區(qū)D ,這算是競(jìng)爭(zhēng)嗎?
      在單CPU系統(tǒng)中,從微觀(guān)上來(lái)說(shuō),在某時(shí)刻系統(tǒng)只能執(zhí)行一個(gè)任務(wù),如果上面的問(wèn)題不算競(jìng)爭(zhēng),那么對(duì)單CPU系統(tǒng)來(lái)說(shuō)
    訪(fǎng)問(wèn)內(nèi)存資源是不可能出現(xiàn)競(jìng)爭(zhēng)的,也就不需要任何加鎖操作。

  2:接著1的問(wèn)題,如果上面情況不算是競(jìng)爭(zhēng), 那么在加鎖操作為什么要preempt_disable()?
     對(duì)于SMP系統(tǒng)加鎖需要preempt_disable()禁止搶占還可以理解(為了提高SMP系統(tǒng)效率, 如果A核上的一個(gè)a進(jìn)程正在訪(fǎng)問(wèn)臨界區(qū)
    此時(shí)a任務(wù)被搶占,,如果此時(shí)B核上的b任務(wù)正在忙等待鎖 ,此時(shí)系統(tǒng)效率就會(huì)降低;如果禁止搶占的話(huà) a任務(wù)就不會(huì)被搶占,從而可以
    很快的釋放鎖.)
     但是對(duì)于單CPU來(lái)說(shuō)同一時(shí)刻不可能有兩個(gè)任務(wù)同時(shí)在運(yùn)行,所以這里禁止搶占是什么意思?

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2009-12-23 12:22 |只看該作者
1、我認(rèn)為這是你所說(shuō)的“競(jìng)爭(zhēng)”,所以要禁用搶占,避免“競(jìng)爭(zhēng)”; (總覺(jué)得“競(jìng)爭(zhēng)”這個(gè)詞不太恰當(dāng))
2、如果這不算“競(jìng)爭(zhēng)”,那么多處理器情況下也不算。一般連接一個(gè)物理內(nèi)存設(shè)備的數(shù)據(jù)通道只有一條,多個(gè)CPU同時(shí)訪(fǎng)問(wèn)也是要被串行化的,并不是同時(shí)。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-12-23 13:10 |只看該作者
UP的情況如果你知道臨界區(qū)有可能被ISR訪(fǎng)問(wèn)的話(huà),是要你在程序中disable interrupt的。如果你沒(méi)有disable而引起競(jìng)爭(zhēng),那是你程序的問(wèn)題了。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-12-23 13:18 |只看該作者

回復(fù) #1 wmmy2008 的帖子

> 1: 假設(shè)進(jìn)程A正在訪(fǎng)問(wèn)臨界區(qū)D,此時(shí)系統(tǒng)來(lái)了一個(gè)IRQ將任務(wù)B喚醒;A任務(wù)被搶系統(tǒng)執(zhí)行任務(wù)B,如
> 果此時(shí)任務(wù)B
>      也訪(fǎng)問(wèn)臨界區(qū)D ,這算是競(jìng)爭(zhēng)嗎?

disable preempt就是為了防止A被B搶占。。。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2009-12-23 13:18 |只看該作者
臨界區(qū)到底在哪些上下文被訪(fǎng)問(wèn)到你要清楚。

如果臨界區(qū)在進(jìn)程上下文和中斷上下文都會(huì)被訪(fǎng)問(wèn),你必須要禁止硬中斷。

如果只在進(jìn)程上下文和軟中斷上下文被訪(fǎng)問(wèn),那禁止軟中斷就行了。

如果只是多個(gè)進(jìn)程上下文之間會(huì)被訪(fǎng)問(wèn),那禁止搶占就ok了。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2009-12-23 13:31 |只看該作者
ULK5.3.1有個(gè)表說(shuō)的很清楚啦

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2009-12-23 13:47 |只看該作者
再仔細(xì)研讀一下ULK3

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2009-12-23 18:10 |只看該作者
單核preempt_disable目的是為了不使當(dāng)前線(xiàn)程被調(diào)度器切換出去,保證某些操作的原子性
您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP