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

posts - 297,  comments - 15,  trackbacks - 0
內(nèi)核同步措施

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


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

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


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

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


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


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

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

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

posted on 2010-04-01 11:50 chatler 閱讀(495) 評論(0)  編輯 收藏 引用 所屬分類: OS
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

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

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>
            亚洲欧美日韩视频一区| 欧美区视频在线观看| 男人的天堂亚洲| 亚洲成在人线av| 欧美精品九九| 亚洲素人在线| 久久婷婷一区| 亚洲精品综合久久中文字幕| 欧美日韩国产亚洲一区| 亚洲女同精品视频| 国产久一道中文一区| 久久久久国产精品人| 亚洲欧美精品一区| 韩日视频一区| 欧美日韩国产不卡| 欧美亚洲在线观看| 亚洲第一视频网站| 午夜精品偷拍| 在线观看一区| 国产精品久久久久久久久| 亚洲精品美女| 久久久国产精品一区二区中文| 国产精品高潮呻吟视频 | 亚洲承认在线| 欧美日韩国产综合网 | 亚洲最新色图| 久久久久久黄| 亚洲午夜精品久久久久久app| 欧美va亚洲va香蕉在线| 亚洲图色在线| 亚洲国产成人精品久久| 久久久久久精| 亚洲网站在线观看| 亚洲高清视频在线观看| 国产精品亚洲综合| 欧美一区观看| 一本久久综合| 亚洲电影在线播放| 久久精品亚洲一区二区| 一区二区三欧美| 亚洲福利视频二区| 国产小视频国产精品| 欧美日韩专区| 欧美精品成人一区二区在线观看| 亚洲破处大片| 亚洲一区二区免费| 亚洲破处大片| 亚洲国产专区| 伊人成年综合电影网| 欧美r片在线| 久久久亚洲欧洲日产国码αv| 欧美成人免费全部观看天天性色| 亚洲精品护士| 亚洲黄色影院| 在线观看视频日韩| 狠狠色综合网站久久久久久久| 久久久午夜电影| 午夜在线电影亚洲一区| 欧美成人精品激情在线观看| 午夜精彩视频在线观看不卡 | 一区二区三区黄色| 亚洲人成网站精品片在线观看 | 久久精品伊人| 午夜精品成人在线| 亚洲一区二区三区视频| 在线亚洲欧美视频| 一区二区三区日韩在线观看| 亚洲精品九九| 夜夜嗨av一区二区三区网站四季av| 国产精品视频1区| 国产精品男女猛烈高潮激情| 欧美日韩日本网| 欧美日韩直播| 久久噜噜亚洲综合| 久久亚洲精品一区二区| 麻豆精品传媒视频| 欧美高清视频一区二区| 午夜精品在线观看| 欧美一区二区在线播放| 久久久久久电影| 久久这里有精品视频| 欧美a级片网站| 欧美日韩国产另类不卡| 欧美性大战久久久久| 免费在线播放第一区高清av| 欧美成人精品激情在线观看| 亚洲欧美综合| 久久精品一区| 欧美黄色日本| 国产精品家庭影院| 欧美黄色一级视频| 欧美午夜精品久久久久久超碰| 裸体素人女欧美日韩| 欧美精品一区二区三区一线天视频| 欧美一区二区视频97| 久久综合久久综合久久综合| 欧美成人激情在线| 久久久久久亚洲精品不卡4k岛国| 亚洲视频在线观看视频| 久久精品免视看| 你懂的一区二区| 国产精品久久久久毛片软件| 国内精品久久久久久久影视蜜臀 | 日韩视频在线一区二区| 中文一区在线| 久久精品国产综合精品| 亚洲高清视频在线观看| 老司机久久99久久精品播放免费 | 国产乱码精品一区二区三区五月婷 | 久久久爽爽爽美女图片| 欧美麻豆久久久久久中文| 国产精品毛片va一区二区三区| 欧美精品在线免费| 国产午夜亚洲精品不卡| 亚洲免费福利视频| 久久精品亚洲乱码伦伦中文| 亚洲国产欧美日韩| 午夜精品在线看| 欧美日本韩国| 精品51国产黑色丝袜高跟鞋| 亚洲在线观看免费| 欧美激情亚洲综合一区| 亚洲宅男天堂在线观看无病毒| 亚洲一区二区三区四区视频| 另类国产ts人妖高潮视频| 国产精品一区久久| 日韩视频免费观看| 亚洲一区二区动漫| 亚洲综合色在线| 午夜精品久久久久久久99黑人| 亚洲欧美另类久久久精品2019| 亚洲欧美日韩精品久久| 欧美一区二区高清| 亚洲日本激情| 美日韩免费视频| 国产亚洲欧美一区二区| 亚洲中字在线| 亚洲日本va午夜在线影院| 久久亚裔精品欧美| 国产一区欧美| 91久久在线播放| 久久综合狠狠综合久久综青草| 欧美电影打屁股sp| 久久精品视频免费观看| 国产日韩欧美日韩大片| 亚洲男人的天堂在线观看| 日韩午夜av电影| 欧美久久婷婷综合色| 亚洲国产另类精品专区| 老司机午夜免费精品视频| 欧美影院成年免费版| 国产欧美一区二区精品性| 午夜精品视频网站| 亚洲一级黄色片| 国产精品久久久久久久久免费 | 欧美男人的天堂| 亚洲理论在线| 亚洲激情网址| 欧美激情亚洲另类| 日韩视频一区二区在线观看 | 国产精品视频你懂的| 中文亚洲视频在线| 日韩一级网站| 欧美视频一区二区在线观看 | 一区一区视频| 久久最新视频| 亚洲最快最全在线视频| 欧美日韩免费一区| 亚洲一级免费视频| 欧美成人免费大片| 欧美成人免费大片| 99精品久久久| 一本色道久久综合亚洲91| 久久免费国产精品| 国产精品美女久久| 欧美一区二区三区在线看| 欧美一级电影久久| 欧美午夜性色大片在线观看| 亚洲夜间福利| 亚洲女人天堂av| 欧美日韩妖精视频| 欧美一区在线看| 久久亚洲私人国产精品va媚药| 国产精品裸体一区二区三区| 久久高清免费观看| 麻豆成人综合网| 亚洲视频在线视频| 欧美亚洲在线播放| 亚洲三级视频在线观看| 亚洲色图自拍| 黑人极品videos精品欧美裸| 欧美黄色aa电影| 国产精品老牛| 欧美aa国产视频| 欧美日韩中文字幕在线视频| 久久九九国产| 欧美黄色aa电影| 欧美在线一级视频| 欧美成人一区二区| 欧美一区亚洲|