九 核心同步介紹

2022-08-29 19:09:20 字數 462 閱讀 4933

9.1 臨界區和競爭條件

所謂臨界區就是訪問和操作共享資料的**段。如果兩個執行執行緒有可能處於同乙個臨界區中執行,那麼這就是程式中包含乙個bug,這種情況就是競爭條件。

9.2.1 造成併發執行的原因

使用者空間之所以需要同步,是因為使用者程式會被排程程式搶占和重新排程,由於使用者程序可能在任何時刻被搶占,而排程程式完全可能選擇另乙個高優先順序的程序到處理器上執行,所以會使得乙個程式處於臨界區時被非自願的搶占了。如果重新排程的程式也進入了同乙個臨界區,就會產生競爭條件。

核心中有類似可能造成併發的原因:

1、中斷

2、軟中斷和tasklet

3、核心搶占

4、睡眠以及與使用者空間同步

5、對稱多處理

9.3 死鎖

避免死鎖:按順序加鎖、防止發生飢餓、不要重複請求同一鎖、設計力求簡單

儘管釋放鎖的順和死鎖無關,但最好還是以獲得鎖的反順序釋放鎖。

核心同步介紹

1.臨界區和競爭條件 所謂臨界區 critical region 就是訪問和操作共享資料的 段。為了避免在臨界區中併發訪問,必須保證這些 是原子地執行,即 在執行結束前不可被打斷,就如同整個臨界區是乙個不可分割的指令一樣。如果兩個執行執行緒有可能處於同乙個臨界區中,稱為競爭條件 race condi...

第九章 核心同步介紹

1.隨著2.6版核心的出現,linux核心已經發展成搶占式核心,如果不加保護,排程程式可以在任何時刻搶占正在執行的核心程式碼,重新排程其他的程序執行 2.臨界區或者臨界段 訪問和操作共享資料的程式碼段 3.如果兩個執行執行緒 指代的是任何正在執行的程式碼,如乙個在核心執行程序 乙個中斷處理程式或者核...

LINUX核心設計思想之核心同步介紹

併發共享資料是造成不穩定的一類隱患,而且這種錯誤一般難以跟蹤和排程 因此必須給核心同步以高度重視.8.1 臨界區和競爭條件 臨界區 訪問和操作共享資料的 段.同步 避免併發和防止競爭條件的策略.原子操作 確保每個事務的完整操作 是同步一種籠統策略說法.8.2 加鎖 鎖提供的就是這樣一種機制 它如同一...