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

隨筆 - 60  文章 - 5  trackbacks - 0
<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(2)

隨筆分類(42)

隨筆檔案(60)

文章檔案(2)

我收藏的博客

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

資料來源:http://blog.chinaunix.net/u1/38576/showart_367985.html。
內核同步措施

    為了避免并發,防止競爭。內核提供了一組同步方法來提供對共享數據的保護。 我們的重點不是介紹這些方法的詳細用法,而是強調為什么使用這些方法和它們之間的差別。
    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);


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


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

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

posted on 2009-06-02 11:49 黃劍父 閱讀(359) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精品专区| 亚洲福利在线视频| 国产女优一区| 国产精品高精视频免费| 免费欧美日韩| 农村妇女精品| 欧美精品日韩一本| 欧美美女福利视频| 欧美视频一区二区三区在线观看 | 亚洲精品一区二区三区蜜桃久| 国产偷国产偷精品高清尤物| 国产精品视频99| 国产午夜一区二区三区| 欲香欲色天天天综合和网| 亚洲大片精品永久免费| 日韩亚洲欧美精品| 亚洲视屏一区| 久久精品视频亚洲| 亚洲精选一区| 久久免费精品视频| 欧美区视频在线观看| 国产色爱av资源综合区| 亚洲人成网在线播放| 小辣椒精品导航| 欧美不卡高清| 99riav1国产精品视频| 乱中年女人伦av一区二区| 欧美日韩裸体免费视频| 亚洲人成人77777线观看| 欧美专区中文字幕| 亚洲免费观看在线观看| 久久综合色88| 国产精品最新自拍| 在线亚洲一区二区| 欧美成va人片在线观看| 欧美影视一区| 国产欧美日韩亚洲一区二区三区| 日韩一级大片在线| 亚洲日本欧美在线| 欧美激情自拍| 久久久999精品视频| 欧美三区在线视频| 亚洲精品免费一区二区三区| 美国十次了思思久久精品导航| 亚洲影院一区| 激情亚洲成人| 亚洲国产精品一区二区www在线| 蜜桃av噜噜一区| 亚洲精品美女久久久久| 先锋a资源在线看亚洲| 亚洲一区二区三区777| 国产日韩欧美一区二区三区在线观看| 亚洲女女女同性video| 亚洲欧美日韩国产综合精品二区| 国产精品一级二级三级| 久久精品一区四区| 久久精品理论片| 久久动漫亚洲| 欧美 日韩 国产一区二区在线视频| 久久久久成人精品免费播放动漫| 久久国产免费看| 欧美视频在线播放| 伊人一区二区三区久久精品| 在线精品视频在线观看高清| 亚洲国产欧美另类丝袜| av成人黄色| 亚洲欧美国产高清| 国内欧美视频一区二区| 一区二区在线观看视频在线观看| 亚洲成人在线视频网站| 亚洲欧美在线免费观看| 亚欧成人在线| 伊人精品成人久久综合软件| 久久久久国产免费免费| 亚洲男同1069视频| 国产精品99久久久久久久vr| 日韩一区二区精品葵司在线| 亚洲精品男同| 亚洲电影一级黄| 老色鬼久久亚洲一区二区| 欧美高清不卡在线| 亚洲在线不卡| 亚洲国产高清自拍| 亚洲伊人一本大道中文字幕| 欧美激情性爽国产精品17p| 黄色国产精品| 模特精品在线| 99视频精品在线| 欧美日韩亚洲一区二区三区在线观看 | 亚洲精选91| 麻豆成人在线观看| 国产精品久久久久久久第一福利| 午夜精品久久久久久久99黑人| 亚洲精品乱码久久久久久久久| 国产午夜精品一区二区三区欧美 | 欧美日韩一区二区三区在线 | 久久都是精品| 亚洲一区二区三区精品动漫| 日韩视频三区| 欧美日产国产成人免费图片| 久久夜色精品国产| 国产一区香蕉久久| 午夜精品久久久久久久99樱桃 | 久久久噜噜噜久久狠狠50岁| 亚洲国产综合91精品麻豆| 久久riav二区三区| 国产精品一区二区久久久| 在线亚洲欧美| 亚洲视频免费在线| 精品成人在线| 国产色综合网| 欧美午夜片在线观看| 媚黑女一区二区| 欧美一区成人| 午夜一区二区三视频在线观看| 亚洲第一级黄色片| 久久蜜桃资源一区二区老牛 | 性欧美办公室18xxxxhd| 亚洲欧洲美洲综合色网| 亚洲二区视频在线| 亚洲第一中文字幕| 农夫在线精品视频免费观看| 久久久精品欧美丰满| 欧美一区=区| 久久综合九色综合欧美狠狠| 久久久成人精品| 久久嫩草精品久久久久| 欧美国产欧美亚州国产日韩mv天天看完整| 久久国产视频网| 亚洲欧洲一区二区在线观看 | 久久精品日产第一区二区三区| 羞羞漫画18久久大片| 久久免费观看视频| 蜜桃久久av| 亚洲影视中文字幕| 午夜精品免费视频| 欧美中文字幕不卡| 美女精品在线观看| 国产一区二区三区高清| 精品二区视频| 亚洲人在线视频| 亚洲欧美激情诱惑| 久久国产精品第一页| 欧美成人自拍| 亚洲在线视频一区| 久久免费偷拍视频| 欧美三级电影网| 伊人久久亚洲热| 亚洲一区二区毛片| 欧美成年人视频网站| 中文国产一区| 美日韩丰满少妇在线观看| 国产精品美女午夜av| 亚洲国产91色在线| 久久国产精品网站| 99精品国产福利在线观看免费| 欧美高清在线播放| 一区二区三区国产| 欧美成人黄色小视频| 国产欧美一区二区三区久久| 亚洲美女毛片| 亚洲成色精品| 麻豆精品网站| 国产精品视频一二三| 亚洲国产日韩在线| 免费亚洲视频| 久久久99爱| 黑人巨大精品欧美一区二区 | 亚洲国产第一| 久久久在线视频| 激情欧美一区二区三区| 久久综合久久综合久久综合| 国产精品自拍网站| 久久国产夜色精品鲁鲁99| 欧美一区免费视频| 日韩一二在线观看| 欧美国产在线视频| 欧美成人第一页| 亚洲一区尤物| 久久久久欧美精品| 亚洲三级免费| 亚洲欧美卡通另类91av| 国产一区二区三区丝袜| 久久另类ts人妖一区二区| 欧美亚洲日本一区| 精品粉嫩aⅴ一区二区三区四区| 欧美高清不卡| 国产精品夜夜夜| 亚洲午夜女主播在线直播| 亚洲视频在线观看网站| 国产精品视频午夜| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲第一在线综合在线| 国产精品毛片在线看| 另类av一区二区| 欧美色网一区二区| 欧美激情国产高清| 国产欧美日韩精品一区| 99亚洲一区二区| 国产欧美一区二区三区沐欲|