日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux内核笔记-内核同步

發布時間:2025/3/8 linux 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核笔记-内核同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? linux內核就相當于不斷對請求進行響應的服務器,這些請求可能來自CPU,可能來自發出中斷的外部設備。我們將內核看作兩種請求的侍者。

? (1)老板提出請求,侍者如果空閑,為老板服務。(系統調用或異常)

? (2)侍者正在無顧客服務時,老板提出請求,則轉去為老板服務。(中斷異常嵌套)

? (3)侍者正為老板服務時,另一老板提出請求,此時轉去為另一個老板服務,回頭再給這個老板服務。(中斷嵌套)

? (4)老板可命令老板停止為當前客戶服務,侍者完成老板請求之后,可能為新選中的顧客服務。(內核搶占)

內核搶占特點:一個內核態運行的進程,可以被執行內核函數期間被另一個進程取代。有關內核搶占參照本文:內核搶占


同步概念

? ? ? 臨界區是一段代碼,進入臨界區的內核控制路徑必須全部執行這段代碼,其他控制路徑才能進入臨界區。單核cpu可以通過簡單的關閉中斷、禁止內核搶占來進行保證臨界區的互斥訪問,多cpu就不行 了。

? ? ? 下列條件不需要同步:

? ? (1)執行中斷的內核路徑不可能被可延遲或系統調用服務例程內核路徑所中斷,所以不需要同步;

? ? (2)軟中斷和tasklet不能再同一個CPU上交替執行,所以僅這兩者存在時,不需要同步;

? ? (3)僅被一種tasklet訪問的數據結構不需要同步。


同步原語

1.每CPU變量

? ? ?最重要的同步技術就是把內核變量聲明為每CPU變量,每CPU變量主要是數據結構的數組,系統每個CPU對應數組的一個元素。一個CPU不應該訪問與其他CPU對應的數組元素。每個CPU可以隨意修改自己的元素不用擔心出現競爭條件。每CPU變量對來自異步函數(中斷和可延遲函數)的訪問不提供保護,在這種情況下需要提供另外的同步原語。內核搶占可導致每CPU變量產生競爭條件

2.原子操作

? ? ?這樣的操作是芯片原子級的,執行這樣的指令,中間不能中斷,且避免其他的CPU訪問同樣的內存單元。這種原子操作,通過“鎖定”內存總線實現,直到這條指令執行結束為止,其他處理器不能訪問該內存單元。原子操作:

? ? ? atom_read(v),atom_set,atom_add,atom_sub.....

3.優化和內存屏障

? ? ?當使用編譯器的時候,編譯器可能重新安排匯編語言指令以使寄存器以最優的方式執行。當處理同步時,必須避免指令重新排序??赏ㄟ^設置內存屏障,確保原語之后的操作語句執行之前,原語操作之前的語句已經完成,這樣保證匯編語句順序執行。

4.自旋鎖

? ?? 自旋鎖是用來多處理環境中的一種特殊鎖。如果內核路徑發現鎖是開著的,則可獲取鎖進入臨界區。相反如果內核路徑發現鎖由另一個CPU上的控制路徑所持有,則在周圍“旋轉”(其實,占著cpu死等,等到為止)。

? ? ?自旋鎖的循環指令表示“忙等”(這種忙等,是nop操作,經過linux優化了,說是節省能源)。注意,在忙等期間,內核搶占有效,就是等待的進程可能被其他進程替代。一般來說,由自旋鎖所保護的每個臨界區都是禁止內核搶占的。

spinlock_t含有的兩個字段:

? ? ? slock;自旋鎖的狀態,1表示未加鎖

? ? ? break_lock:表示有無等待該鎖的進程

提供的操作:

? ? ? spin_lock_init();//初始化一把鎖

? ? ? spin_lock();//循環試圖獲得自旋鎖

? ? ? spin_unlock();//釋放鎖

? ? ? spin_unlock_wait();//等待鎖

? ? ? spin_is_locked();//判斷鎖釋是否被持有


5.讀寫自旋鎖

? ? ? 讀寫鎖是為了增加內核的并發能力。該鎖的特點:讀者進程可以同時多個進入臨界區;寫者只能一個進入臨界區(有寫者的時候,讀者無法進入)。讀者和寫者具有相同的優先權。

? ? ? 讀/寫自旋鎖是一個rwlock_t結構。有read_lock和write_lock。


6.順序鎖

? ? ?讀/寫自旋鎖中,讀者和寫者具有相同的優先權。事實上,可以這樣,即使讀者在讀的時候,也可以讓寫者繼續進行,這種策略,寫者永遠不會等待。但是,讀者需要對所讀到的東西檢查,檢查是否有被某個寫者修改,一旦發現被修改,要重新讀取。


7.讀-拷貝-創新(RCU)

? ? ?寫者要寫的時候,拷貝一份出來寫,然后拷回去。


8.信號量

? ? ?信號量其實也是為了實現互斥和同步(無外乎就是一種P/V操作封裝)。但是,信號量中的進程一旦發現資源不可用時,就將自己掛起進入睡眠狀態,這不是一種忙等。

? ? ?然后,使用該資源的進程使用結束后,喚醒正在等待的進程,ok,同步完畢。

? ? ?linux提供兩種信號量:(1)內核信號量,由內核控制路徑控制;(2)System V IPC信號量,用戶態進程使用。


9.信號量

? ? ?跟信號量是一樣的,但是允許多個讀者同時進入設計的,你懂的。

?

總結

以上是生活随笔為你收集整理的linux内核笔记-内核同步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 操天天操 | av免费在线观看网站 | 亚洲一级片网站 | av免费高清 | 色屁屁视频 | 久久免费黄色 | 医生强烈淫药h调教小说视频 | 免费小视频在线观看 | 午夜黄色av | 狠狠操狠狠爱 | 国产v片| 精品无码一区二区三区电影桃花 | 日本护士取精xxxxxhd | 夜夜操狠狠操 | 日韩最新网址 | 亚洲国产成人精品久久 | 在线观看麻豆 | 色综合av| 在线视频一区二区三区四区 | 在线观看视频 | 日韩中文字幕av电影 | 日本涩涩视频 | 免费黄色a| 97精品久久人人爽人人爽 | 日韩久久一区二区三区 | 国外成人在线视频 | 久久精品免费av | 一区二区三区四区亚洲 | 91丝袜视频 | 日本三级韩国三级三级a级中文 | 热久久最新网址 | 欧美性猛交xxxx免费看久久久 | 国产做a视频 | 亚洲欧美日韩精品久久亚洲区 | 四虎福利 | 精品人妻午夜一区二区三区四区 | 狂野少女电影在线观看国语版免费 | 男女在楼梯上高潮做啪啪 | 亚洲成人精品一区二区 | 国产强被迫伦姧在线观看无码 | 成人免费看片网站 | 在线视频毛片 | 天天操 夜夜操 | 97久草| 久久久高清免费视频 | 国产一区二区色 | 久久人人爽天天玩人人妻精品 | 欧美视频免费在线观看 | 亚洲免费视频一区 | 日本在线精品视频 | 亚洲最大的黄色网 | 少妇按摩一区二区三区 | 久久亚洲av成人无码国产电影 | 免费观看久久 | 欧美一区二区三区久久久 | 久久精品视频网站 | 荫道bbwbbb高潮潮喷 | 高潮videossex高潮 | 国产精品视频区 | 亚洲深夜福利视频 | 国产精品久久久久久亚洲影视 | 强迫凌虐淫辱の牝奴在线观看 | 天天综合天天做天天综合 | 久久女人天堂 | 中文字幕一区二区在线视频 | 你懂的网址在线观看 | 黄色网www | 99久久久国产精品无码网爆 | 欧美日韩精品久久久免费观看 | 三级不卡视频 | 无毒黄色网址 | 日本欧美色 | 免费看a视频 | 久久精品伦理 | 国产一级二级三级 | 性av网站| 毛片2| 久久免费少妇高潮久久精品99 | 成人在线视频免费播放 | 日本成人社区 | 9.1成人看片免费版 日韩经典在线 | 桃谷绘里香番号 | 国产学生美女无遮拦高潮视频 | 精品人妻一区二区三区日产 | 男人天堂网在线 | 日本乱子伦 | 麻豆成人精品国产免费 | 日韩国产欧美一区二区三区 | 亚洲精品www久久久久久广东 | 亚洲男人天堂2017 | 久久91av | 在线精品视频一区 | 午夜视频在线 | 亚洲美女综合 | 在线观看的免费 | 国产人澡人澡澡澡人碰视频 | 在线天堂www在线国语对白 | 黄色在线小视频 | 日韩精品电影一区二区三区 |