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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5,内核同步

發(fā)布時間:2024/4/17 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5,内核同步 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 內(nèi)核搶占?
  • 無論在搶占還是非搶占內(nèi)核中,運(yùn)行在內(nèi)核態(tài)的進(jìn)程都可以自動放棄CPU.稱為計(jì)劃性進(jìn)程切換.但是,搶占式內(nèi)核在相應(yīng)引起進(jìn)程切換的異步事件的方式上有差異,稱為強(qiáng)制性進(jìn)程切換.
  • 搶占式內(nèi)核的特點(diǎn): 一個在內(nèi)核態(tài)運(yùn)行的進(jìn)程,可能在執(zhí)行內(nèi)核函數(shù)期間被另一個進(jìn)程取代.可搶占式的目的是減少用戶態(tài)進(jìn)程的分派延遲(即從進(jìn)程變?yōu)榭蓤?zhí)行狀態(tài)到它實(shí)際開始運(yùn)行之間的間隔).但是它會引起不容忽視的開銷.
  • 只有當(dāng)內(nèi)核正在執(zhí)行異常處理程序,且內(nèi)核搶占沒有被顯示禁止時,才可能搶占內(nèi)核.同時本地CPU必須打開本地中斷.
  • 需要同步的情況: 當(dāng)計(jì)算的結(jié)果依賴于兩個或以上的交叉內(nèi)核控制路徑的嵌套方式時,可能出現(xiàn)競爭條件.臨界區(qū)是一段代碼,在其他的內(nèi)核控制路徑能夠進(jìn)入臨界區(qū)前,進(jìn)入臨界區(qū)的內(nèi)核控制路徑必須全部執(zhí)行完這段代碼. 必須確保在任意時刻只有一個內(nèi)核控制路徑處于臨界區(qū).
  • 不需要同步的:1)中斷處理程序和tasklet不必編寫成可重入函數(shù); 2)僅被軟中斷和tasklet訪問的每CPU變量不需要同步; 3)僅被一種tasklet訪問的數(shù)據(jù)結(jié)構(gòu)不需要同步.
  • 每CPU變量:最好的同步技術(shù)是吧設(shè)計(jì)不需要同步的內(nèi)核放在首位.因?yàn)轱@式的同步原語都有性能開銷. 吧內(nèi)核變量聲明為每CPU 變量.?
  • 僅當(dāng)確定在系統(tǒng)的CPU上的數(shù)據(jù)在邏輯上是獨(dú)立的時候才使用.
  • 主要是數(shù)據(jù)結(jié)構(gòu)的數(shù)組,每個CPU對應(yīng)數(shù)組的一個元素.在主存中被排列以使每個數(shù)據(jù)結(jié)構(gòu)存放在Cache的不同行.所以,并發(fā)訪問不會引起Cache行的切用和失效
  • 對來自不同CPU的并發(fā)訪問提供保護(hù),但是對來自異步函數(shù)的訪問不提供保護(hù).
  • 原則:內(nèi)核控制路徑應(yīng)該在禁用搶占的情況下訪問每CPU變量.
  • 原子操作:?
  • 若干匯編指令具有"讀-修改-寫"類型.即訪問存儲器單元兩次,一次讀,一次寫.
  • 確保這樣的操作在芯片級是原子的.任何這樣的操作都必須以單個指令執(zhí)行.
  • 優(yōu)化和內(nèi)存屏障?
  • 使用優(yōu)化的編譯器時,指令不會嚴(yán)格按照他們在源代碼中出現(xiàn)的順序執(zhí)行.此外,CPU通常并行地執(zhí)行若干條指令,且可能重新安排內(nèi)存訪問.
  • 但是在處理同步時,必須避免指令重新排序.所以,所有的同步原語起優(yōu)化和內(nèi)存屏障的作用.
  • 優(yōu)化屏障:保證編譯程序不會混淆放在原語操作之前和之后的匯編指令.但并不保證不使當(dāng)前CPU把匯編指令混在一起執(zhí)行.
  • 內(nèi)存屏障:在原語執(zhí)行之前,原語之前的操作已經(jīng)完成,類似于防火墻.
  • 自旋鎖?
  • 加鎖技術(shù):當(dāng)內(nèi)核控制路徑必須訪問共享數(shù)據(jù)結(jié)構(gòu)或進(jìn)入臨界區(qū)時,就需要為自己獲取一把"鎖".
  • 自旋鎖用在多CPU下.如果鎖開著,就獲取鎖并繼續(xù)自己的執(zhí)行.相反,當(dāng)鎖由運(yùn)行在另一CPU上的內(nèi)核控制"鎖著"時,就在周圍"旋轉(zhuǎn)"反復(fù)執(zhí)行一條緊湊的循環(huán)指令(忙等).直到鎖被釋放.
  • 在自旋鎖忙等時,內(nèi)核搶占還是有效的.等待自旋鎖釋放的進(jìn)程有可能被更高優(yōu)先級的進(jìn)程替代.
  • 讀寫自旋鎖?
  • 為了增加內(nèi)核的并發(fā)能力.在沒有寫的情況下,允許并發(fā)的讀操作.

轉(zhuǎn)載于:https://www.cnblogs.com/robyn/p/3729343.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。