青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0
內核同步措施

    為了避免并發,防止競爭。內核提供了一組同步方法來提供對共享數據的保護。 我們的重點不是介紹這些方法的詳細用法,而是強調為什么使用這些方法和它們之間的差別。
    Linux 使用的同步機制可以說從2.0到2.6以來不斷發展完善。從最初的原子操作,到后來的信號量,從大內核鎖到今天的自旋鎖。這些同步機制的發展伴隨 Linux從單處理器到對稱多處理器的過度;伴隨著從非搶占內核到搶占內核的過度。鎖機制越來越有效,也越來越復雜。
    目前來說內核中原子操作多用來做計數使用,其它情況最常用的是兩種鎖以及它們的變種:一個是自旋鎖,另一個是信號量。我們下面就來著重介紹一下這兩種鎖機 制。


自旋鎖
------------------------------------------------------
    自旋鎖是專為防止多處理器并發而引入的一種鎖,它在內核中大量應用于中斷處理等部分(對于單處理器來說,防止中斷處理中的并發可簡單采用關閉中斷的方式, 不需要自旋鎖)。
    自旋鎖最多只能被一個內核任務持有,如果一個內核任務試圖請求一個已被爭用(已經被持有)的自旋鎖,那么這個任務就會一直進行忙循環——旋轉——等待鎖重 新可用。
要是鎖未被爭用,請求它的內核任務便能立刻得到它并且繼續進行。自旋鎖可以在任何時刻防止多于一個的內核任務同 時進入臨界區,因此這種鎖可有效地避免多處理器上并發運行的內核任務競爭共享資源。
    事實上,自旋鎖的初衷就是:在短期間內進行輕量級的鎖定。一個被爭用的自旋鎖使得請求它的線程在等待鎖重新可用的期間進行自旋(特別浪費處理器時間),所 以自旋鎖不應該被持有時間過長。如果需要長時間鎖定的話, 最好使用信號量。
自旋鎖的基本形式如下:
    spin_lock(&mr_lock);
    //臨界區
    spin_unlock(&mr_lock);

    因為自旋鎖在同一時刻只能被最多一個內核任務持有,所以一個時刻只有一個線程允許存在于臨界區中。這點很好地滿足了對稱多處理機器需要的鎖定服務。在單處 理器上,自旋鎖僅僅當作一個設置內核搶占的開關。如果內核搶占也不存在,那么自旋鎖會在編譯時被完全剔除出內核。
    簡單的說,自旋鎖在內核中主要用來防止多處理器中并發訪問臨界區,防止 內核搶占造成的競爭。另外自旋鎖不允許任務睡眠(持有自旋鎖的任務睡眠會造成自死鎖——因為睡眠有可能造成持有鎖的內核 任務被重新調度,而再次申請自己已持有的鎖),它能夠在中斷上下文中使用
    死鎖:假設有一個或多個內核任務和一個或多個資源,每個內核都在等待其中的一個資源,但所有的資源都已經被占用了。這便會發生所有內核任務都在相互等待, 但它們永遠不會釋放已經占有的資源,于是任何內核任務都無法獲得所需要的資源,無法繼續運行,這便意味著死鎖發生了。自死瑣是說自己占有了某個資源,然后 自己又申請自己已占有的資源,顯然不可能再獲得該資源,因此就自縛手腳了。


信號量
------------------------------------------------------
    Linux中的信號量是一種睡眠鎖。如果有一個任務試圖獲得一個已被持有的信號量時,信號量會將其推入等待隊列,然后讓其睡眠。這時處理器獲得自由去執行 其它代碼。當持有信號量的進程將信號量釋放后,在等待隊列中的一個任務將被喚醒,從而便可以獲得這個信號量。
    信號量的睡眠特性,使得信號量適用于鎖會被長時間持有的情況;只能在進程上下文中使用,因為中斷上下文中是不能被調度的;另外當代碼持有信號量時,不可以 再持有自旋鎖。

信號量基本使用形式為:
static DECLARE_MUTEX(mr_sem);//聲明互斥信號量
if(down_interruptible(&mr_sem))
    //可被中斷的睡眠,當信號來到,睡眠的任務被喚醒
    //臨界區
up(&mr_sem);


信號量和自旋鎖區別
------------------------------------------------------
    雖然聽起來兩者之間的使用條件復雜,其實在實際使用中信號量和自旋鎖并不易混淆。注意以下原則:
    如果代碼需要睡眠——這往往是發生在和用戶空間同步時——使用信號量是唯一的選擇。由于不受睡眠的限制,使用信號量通常來說更加簡單一些。如果需要在自旋 鎖和信號量中作選擇,應該取決于鎖被持有的時間長短。理想情況是所有的鎖都應該盡可能短的被持有,但是如果鎖的持有時間較長的話,使用信號量是更好的選 擇。另外,信號量不同于自旋鎖,它不會關閉內核搶占,所以持有信號量的代碼可以被搶占。這意味者信號量不會對影響調度反應時間帶來負面影響。


自旋鎖對信號量
------------------------------------------------------
需求                     建議的加鎖方法

低開銷加鎖               優先使用自旋鎖
短期鎖定                 優先使用自旋鎖
長期加鎖                 優先使用信號量
中斷上下文中加鎖          使用自旋鎖
持有鎖是需要睡眠、調度     使用信號量

from:
http://blog.chinaunix.net/u1/38576/showart_367985.html

posted on 2010-04-01 11:50 chatler 閱讀(492) 評論(0)  編輯 收藏 引用 所屬分類: OS
<2010年4月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            另类综合日韩欧美亚洲| 亚洲国产一二三| 亚洲伦理自拍| 蜜臀a∨国产成人精品| 亚洲国产网站| 玖玖玖国产精品| 免费亚洲一区二区| aⅴ色国产欧美| 亚洲午夜精品久久久久久app| 亚洲一品av免费观看| 日韩午夜在线电影| 狠狠噜噜久久| 亚洲精品日韩在线| 久久综合亚洲社区| 黑人巨大精品欧美黑白配亚洲 | 欧美激情一二区| 1024国产精品| 午夜精品视频一区| 99精品欧美一区二区三区综合在线 | 在线播放亚洲一区| 国内精品**久久毛片app| 午夜天堂精品久久久久| 欧美激情精品久久久久久大尺度| 欧美精品首页| 亚洲精品免费一二三区| 亚洲一区二区三区高清| 欧美国产日韩一区二区在线观看 | 国产精品综合av一区二区国产馆| 国产精品一区久久久久| 久热国产精品| 亚洲女ⅴideoshd黑人| 欧美激情一二三区| 久久午夜激情| 亚洲美女电影在线| 欧美在线亚洲| 亚洲欧美清纯在线制服| 免费观看在线综合| 欧美一区二区在线| 久久久综合精品| 久久久www成人免费精品| 亚洲理论在线观看| 亚洲国产日韩在线| 韩日视频一区| 国产精品久久999| 欧美一级视频免费在线观看| 欧美劲爆第一页| 美女主播精品视频一二三四| 欧美一区二区三区啪啪| 午夜在线a亚洲v天堂网2018| 亚洲美女av网站| 亚洲毛片在线| 99精品久久久| 亚洲一区二区三区777| 在线视频欧美日韩精品| 亚洲美女色禁图| 久久精品人人爽| 欧美专区在线播放| 亚洲欧美日韩国产中文| 这里只有精品在线播放| 亚洲精品一区二区在线观看| 1024精品一区二区三区| 国产真实乱偷精品视频免| 国产原创一区二区| 在线成人av.com| 91久久精品日日躁夜夜躁国产| 亚洲国产日韩欧美在线动漫| 亚洲电影免费观看高清完整版| 欧美风情在线观看| 欧美精品 国产精品| 欧美激情欧美狂野欧美精品| 欧美国产一区视频在线观看| 欧美激情一区二区久久久| 欧美视频福利| 国产精品美女999| 国产精品一区二区久久久久| 国产欧美在线看| 久久精品91| 精品动漫3d一区二区三区免费| 日韩天堂在线视频| 亚洲国产精品日韩| av不卡在线| 亚洲一区二区成人| 久久精品日产第一区二区三区 | 亚洲欧美日韩国产一区二区三区| 久久久国产视频91| 亚洲精品久久嫩草网站秘色| 午夜国产精品影院在线观看| 久久久中精品2020中文| 狠狠色狠色综合曰曰| 亚洲国产精品第一区二区| av成人天堂| 久久久久青草大香线综合精品| 亚洲国产成人在线| 午夜老司机精品| 欧美日韩精品国产| 蜜臀久久久99精品久久久久久| 欧美成人情趣视频| 亚洲欧美成人网| 欧美精品一卡二卡| 久久婷婷人人澡人人喊人人爽| 欧美成人午夜影院| 亚洲嫩草精品久久| 欧美日韩国产区一| 国产裸体写真av一区二区| 在线观看视频一区二区| 亚洲伊人网站| 久久精品国产精品亚洲精品| 久久亚洲精品视频| 女仆av观看一区| 国产精品无码永久免费888| 黄色一区二区三区四区| 亚洲免费影院| 99国内精品久久| 欧美1区3d| 狠狠狠色丁香婷婷综合久久五月 | 伊人久久大香线蕉综合热线| 亚洲综合色噜噜狠狠| 欧美激情一区二区久久久| 欧美在线观看视频在线| 国产精品欧美激情| 中国女人久久久| 亚洲黄色一区二区三区| 看片网站欧美日韩| 韩国成人理伦片免费播放| 欧美一区视频在线| 午夜精品理论片| 国产精品永久| 性久久久久久| 亚洲欧美日韩在线播放| 国产精品一二三四| 欧美一级淫片aaaaaaa视频| 亚洲午夜精品一区二区| 国产精品久久久久久久9999 | 嫩草伊人久久精品少妇av杨幂| 中日韩美女免费视频网站在线观看| 欧美黑人在线播放| 一区二区三区高清在线| 日韩午夜在线视频| 国产精品久久久亚洲一区| 亚洲一区二区成人在线观看| 一区二区三区日韩在线观看| 欧美三级视频| 欧美一区二区三区日韩| 欧美一级二级三级蜜桃| 一区二区三区**美女毛片| 国产农村妇女毛片精品久久麻豆 | 一区二区动漫| 欧美视频一区二区在线观看 | 亚洲免费精品| 欧美精品在线一区二区| 亚洲欧美制服另类日韩| 亚洲欧美综合| 亚洲精品免费看| 亚洲日本在线视频观看| 欧美激情在线狂野欧美精品| 亚洲精品一区在线观看| 欧美三级视频在线| 久久国产日韩欧美| 毛片一区二区| 欧美特黄a级高清免费大片a级| 激情婷婷欧美| 一区二区三区不卡视频在线观看 | 亚洲欧美另类久久久精品2019| 国产日韩av一区二区| 欧美国产日韩一区二区三区| 欧美日韩免费在线| 久久国产精品99久久久久久老狼| 久久人91精品久久久久久不卡| 亚洲精品影院在线观看| 亚洲婷婷综合色高清在线| 黄色亚洲大片免费在线观看| 亚洲激情午夜| 国产亚洲人成网站在线观看| 亚洲激精日韩激精欧美精品| 国产日韩av高清| 亚洲美女黄色| 亚洲激情婷婷| 亚洲欧美综合v| 欧美精品一区二区三区四区| 精品动漫av| 一区二区精品| 一区二区三区无毛| 亚洲欧美视频在线观看视频| 一本久道久久综合中文字幕| 亚洲男人av电影| 在线视频亚洲| 欧美a级片网| 久久偷看各类wc女厕嘘嘘偷窃| 欧美韩日一区| 欧美激情一区三区| 黄色av成人| 亚洲欧美日韩中文视频| 亚洲一区二区三区免费观看| 欧美大片在线观看一区| 欧美11—12娇小xxxx| 国产真实久久| 欧美在线精品免播放器视频| 亚洲欧美激情一区| 欧美日韩成人在线播放| 亚洲黄色av一区|