Linux核心同步 基本概念

2021-06-26 21:41:48 字數 1083 閱讀 6289

在linux

核心中,為驅動等核心模組提供了互斥與同步的核心機制。如果執行的系統中自始至終只有乙個執行路徑,那麼無須考慮互斥與同步的問題。現在的系統不僅支援多程序而且自持多處理器。當多個執行路徑併發執行時需要保證對共享資源的安全訪問。一般來講,互斥是對資源的排他性安排,而同步則要對程序執行的先後順序做出妥善的安排。我們對共享的資源進行訪問的**段稱為臨界區(

critical section

),而導致出現多個執行路徑的因素稱為並發源。

1.1 linux系統中的並發源

1).中斷執行路徑

中斷可以隨時打斷當前正在執行的**。當系統正在執行當前程序時,發生了中斷,中斷處理函式和被中斷的程序之間形成併發。在單處理器中,雖然中斷處理函式的執行路徑與被中斷程序黃子健不是真正嚴格意義哈桑的併發,然而中斷處理函式和被中斷程序之間卻可能形成競態。軟中斷的執行可以歸結到此型別的併發中。

核心可以在任何時候喚醒或者排程軟中斷和tasklet

,打斷當前正在執行的**。

2).核心排程器的可搶占性

在單處理器上,因為排程器的可搶占性,導致程序與程序之間的併發。核心的任務可能會被另一任務搶占。

睡眠及使用者空間同步:在核心執行的程序可能會睡眠,就會喚醒排程程式,排程另乙個使用者程序執行。

3).對稱多處理器的併發執行

多處理器系統上程序與程序之間是嚴格意義上的併發,兩個或多個處理器可以同時執行**,每個處理器都可以獨資排程執行乙個程序,在同一時刻有多個程序在同時執行。

1.2 可能會引起

bug的地方

1.如果在核心**操作某一資源時產生乙個中斷,而且該中斷也需要訪問這一資源。

2.如果一段核心**在訪問共享資源時可以被搶占。

3.核心**在臨界區睡眠

4.兩個處理器同時訪問一共享資源

1.3死鎖

死鎖分為自死鎖和abba

死鎖。自死鎖試圖獲取自己已經獲得的鎖;

abba

死鎖互相持有對方想要的鎖,導致相互死鎖。避免死鎖的方法主要有:加鎖順序、防止發生飢餓、不要重複請求同一鎖等。越複雜的加鎖方案越有可能造成死鎖

參考書籍:linux核心設計與實現

深入linux裝置驅動程式核心機制

基本概念 同步,非同步

同步就是許多執行緒同時用乙個資源啥的哦,乙個在用別的就要等,非同步就相反了,可以不用等待 下面這是人家的話 同步 傳送乙個請求,等待返回,然後再傳送下乙個請求 非同步 傳送乙個請求,不等待返回,隨時可以再傳送下乙個請求 同步可以避免出現死鎖,讀髒資料的發生,一般共享某一資源的時候用,如果每個人都有修...

hive核心基本概念

基於 hadoop 的乙個資料倉儲工具 hive本身不提供資料儲存功能,使用hdfs做資料儲存,hive也不分布式計算框架,hive的核心工作就是把sql語句翻譯成mr程式 hive也不提供資源排程系統,也是預設由hadoop當中yarn集群來排程 可以將結構化的資料對映為一張資料庫表,並提供 hq...

hive核心基本概念

基於 hadoop 的乙個資料倉儲工具 hive本身不提供資料儲存功能,使用hdfs做資料儲存,hive也不分布式計算框架,hive的核心工作就是把sql語句翻譯成mr程式 hive也不提供資源排程系統,也是預設由hadoop當中yarn集群來排程 可以將結構化的資料對映為一張資料庫表,並提供 hq...